73 static inline void release_set_mark(HeapWord* mem, markWord m);
74
75 inline void release_set_mark(markWord m);
76 inline markWord cas_set_mark(markWord new_mark, markWord old_mark);
77 inline markWord cas_set_mark(markWord new_mark, markWord old_mark, atomic_memory_order order);
78
79 // Returns the prototype mark that should be used for this object.
80 inline markWord prototype_mark() const;
81
82 // Used only to re-initialize the mark word (e.g., of promoted
83 // objects during a GC) -- requires a valid klass pointer
84 inline void init_mark();
85
86 inline Klass* klass() const;
87 inline Klass* klass_or_null() const;
88 inline Klass* klass_or_null_acquire() const;
89 // Get the klass without running any asserts.
90 inline Klass* klass_without_asserts() const;
91
92 void set_narrow_klass(narrowKlass nk) NOT_CDS_JAVA_HEAP_RETURN;
93 inline void set_klass(Klass* k);
94 static inline void release_set_klass(HeapWord* mem, Klass* k);
95
96 // For klass field compression
97 static inline void set_klass_gap(HeapWord* mem, int z);
98
99 // Size of object header, aligned to platform wordSize
100 static int header_size() {
101 if (UseCompactObjectHeaders) {
102 return sizeof(markWord) / HeapWordSize;
103 } else {
104 return sizeof(oopDesc) / HeapWordSize;
105 }
106 }
107
108 // Returns whether this is an instance of k or an instance of a subclass of k
109 inline bool is_a(Klass* k) const;
110
111 // Returns the actual oop size of the object in machine words
112 inline size_t size();
|
73 static inline void release_set_mark(HeapWord* mem, markWord m);
74
75 inline void release_set_mark(markWord m);
76 inline markWord cas_set_mark(markWord new_mark, markWord old_mark);
77 inline markWord cas_set_mark(markWord new_mark, markWord old_mark, atomic_memory_order order);
78
79 // Returns the prototype mark that should be used for this object.
80 inline markWord prototype_mark() const;
81
82 // Used only to re-initialize the mark word (e.g., of promoted
83 // objects during a GC) -- requires a valid klass pointer
84 inline void init_mark();
85
86 inline Klass* klass() const;
87 inline Klass* klass_or_null() const;
88 inline Klass* klass_or_null_acquire() const;
89 // Get the klass without running any asserts.
90 inline Klass* klass_without_asserts() const;
91
92 void set_narrow_klass(narrowKlass nk) NOT_CDS_JAVA_HEAP_RETURN;
93 inline narrowKlass narrow_klass() const;
94 inline void set_klass(Klass* k);
95 static inline void release_set_klass(HeapWord* mem, Klass* k);
96
97 // For klass field compression
98 static inline void set_klass_gap(HeapWord* mem, int z);
99
100 // Size of object header, aligned to platform wordSize
101 static int header_size() {
102 if (UseCompactObjectHeaders) {
103 return sizeof(markWord) / HeapWordSize;
104 } else {
105 return sizeof(oopDesc) / HeapWordSize;
106 }
107 }
108
109 // Returns whether this is an instance of k or an instance of a subclass of k
110 inline bool is_a(Klass* k) const;
111
112 // Returns the actual oop size of the object in machine words
113 inline size_t size();
|