64 65 public: 66 markOop mark() const { return _mark; } 67 markOop* mark_addr() const { return (markOop*) &_mark; } 68 69 void set_mark(volatile markOop m) { _mark = m; } 70 71 inline void release_set_mark(markOop m); 72 inline markOop cas_set_mark(markOop new_mark, markOop old_mark); 73 74 // Used only to re-initialize the mark word (e.g., of promoted 75 // objects during a GC) -- requires a valid klass pointer 76 inline void init_mark(); 77 78 inline Klass* klass() const; 79 inline Klass* klass_or_null() const volatile; 80 inline Klass* klass_or_null_acquire() const volatile; 81 inline Klass** klass_addr(); 82 inline narrowKlass* compressed_klass_addr(); 83 84 inline void set_klass(Klass* k); 85 inline void release_set_klass(Klass* k); 86 87 // For klass field compression 88 inline int klass_gap() const; 89 inline void set_klass_gap(int z); 90 // For when the klass pointer is being used as a linked list "next" field. 91 inline void set_klass_to_list_ptr(oop k); 92 inline oop list_ptr_from_klass(); 93 94 // size of object header, aligned to platform wordSize 95 static int header_size() { return sizeof(oopDesc)/HeapWordSize; } 96 97 // Returns whether this is an instance of k or an instance of a subclass of k 98 inline bool is_a(Klass* k) const; 99 100 // Returns the actual oop size of the object 101 inline int size(); 102 103 // Sometimes (for complicated concurrency-related reasons), it is useful | 64 65 public: 66 markOop mark() const { return _mark; } 67 markOop* mark_addr() const { return (markOop*) &_mark; } 68 69 void set_mark(volatile markOop m) { _mark = m; } 70 71 inline void release_set_mark(markOop m); 72 inline markOop cas_set_mark(markOop new_mark, markOop old_mark); 73 74 // Used only to re-initialize the mark word (e.g., of promoted 75 // objects during a GC) -- requires a valid klass pointer 76 inline void init_mark(); 77 78 inline Klass* klass() const; 79 inline Klass* klass_or_null() const volatile; 80 inline Klass* klass_or_null_acquire() const volatile; 81 inline Klass** klass_addr(); 82 inline narrowKlass* compressed_klass_addr(); 83 84 // oop only test (does not load klass) 85 inline bool klass_is_value_type(); 86 87 inline void set_klass(Klass* k); 88 inline void release_set_klass(Klass* k); 89 90 // For klass field compression 91 inline int klass_gap() const; 92 inline void set_klass_gap(int z); 93 // For when the klass pointer is being used as a linked list "next" field. 94 inline void set_klass_to_list_ptr(oop k); 95 inline oop list_ptr_from_klass(); 96 97 // size of object header, aligned to platform wordSize 98 static int header_size() { return sizeof(oopDesc)/HeapWordSize; } 99 100 // Returns whether this is an instance of k or an instance of a subclass of k 101 inline bool is_a(Klass* k) const; 102 103 // Returns the actual oop size of the object 104 inline int size(); 105 106 // Sometimes (for complicated concurrency-related reasons), it is useful |