45 static int displaced_header_offset_in_bytes() { return offset_of(BasicLock, _displaced_header); }
46 };
47
48 // A BasicObjectLock associates a specific Java object with a BasicLock.
49 // It is currently embedded in an interpreter frame.
50
51 // Because some machines have alignment restrictions on the control stack,
52 // the actual space allocated by the interpreter may include padding words
53 // after the end of the BasicObjectLock. Also, in order to guarantee
54 // alignment of the embedded BasicLock objects on such machines, we
55 // put the embedded BasicLock at the beginning of the struct.
56
57 class BasicObjectLock VALUE_OBJ_CLASS_SPEC {
58 friend class VMStructs;
59 private:
60 BasicLock _lock; // the lock, must be double word aligned
61 oop _obj; // object holds the lock;
62
63 public:
64 // Manipulation
65 oop obj() const { return _obj; }
66 void set_obj(oop obj) { _obj = obj; }
67 BasicLock* lock() { return &_lock; }
68
69 // Note: Use frame::interpreter_frame_monitor_size() for the size of BasicObjectLocks
70 // in interpreter activation frames since it includes machine-specific padding.
71 static int size() { return sizeof(BasicObjectLock)/wordSize; }
72
73 // GC support
74 void oops_do(OopClosure* f) { f->do_oop(&_obj); }
75
76 static int obj_offset_in_bytes() { return offset_of(BasicObjectLock, _obj); }
77 static int lock_offset_in_bytes() { return offset_of(BasicObjectLock, _lock); }
78 };
79
80
81 #endif // SHARE_VM_RUNTIME_BASICLOCK_HPP
|
45 static int displaced_header_offset_in_bytes() { return offset_of(BasicLock, _displaced_header); }
46 };
47
48 // A BasicObjectLock associates a specific Java object with a BasicLock.
49 // It is currently embedded in an interpreter frame.
50
51 // Because some machines have alignment restrictions on the control stack,
52 // the actual space allocated by the interpreter may include padding words
53 // after the end of the BasicObjectLock. Also, in order to guarantee
54 // alignment of the embedded BasicLock objects on such machines, we
55 // put the embedded BasicLock at the beginning of the struct.
56
57 class BasicObjectLock VALUE_OBJ_CLASS_SPEC {
58 friend class VMStructs;
59 private:
60 BasicLock _lock; // the lock, must be double word aligned
61 oop _obj; // object holds the lock;
62
63 public:
64 // Manipulation
65 oop obj() const {
66 return _obj;
67 }
68 void set_obj(oop obj) {
69 _obj = obj;
70 }
71 BasicLock* lock() { return &_lock; }
72
73 // Note: Use frame::interpreter_frame_monitor_size() for the size of BasicObjectLocks
74 // in interpreter activation frames since it includes machine-specific padding.
75 static int size() { return sizeof(BasicObjectLock)/wordSize; }
76
77 // GC support
78 void oops_do(OopClosure* f) { f->do_oop(&_obj); }
79
80 static int obj_offset_in_bytes() { return offset_of(BasicObjectLock, _obj); }
81 static int lock_offset_in_bytes() { return offset_of(BasicObjectLock, _lock); }
82 };
83
84
85 #endif // SHARE_VM_RUNTIME_BASICLOCK_HPP
|