137
138 template <typename T> inline size_t field_offset(T* p) const;
139
140 // Standard compare function returns negative value if o1 < o2
141 // 0 if o1 == o2
142 // positive value if o1 > o2
143 inline static int compare(oop o1, oop o2) {
144 void* o1_addr = (void*)o1;
145 void* o2_addr = (void*)o2;
146 if (o1_addr < o2_addr) {
147 return -1;
148 } else if (o1_addr > o2_addr) {
149 return 1;
150 } else {
151 return 0;
152 }
153 }
154
155 inline static bool equals(oop o1, oop o2) { return Access<>::equals(o1, o2); }
156
157 // Access to fields in a instanceOop through these methods.
158 template <DecoratorSet decorator>
159 oop obj_field_access(int offset) const;
160 oop obj_field(int offset) const;
161 void obj_field_put(int offset, oop value);
162 void obj_field_put_raw(int offset, oop value);
163 void obj_field_put_volatile(int offset, oop value);
164
165 Metadata* metadata_field(int offset) const;
166 Metadata* metadata_field_raw(int offset) const;
167 void metadata_field_put(int offset, Metadata* value);
168
169 Metadata* metadata_field_acquire(int offset) const;
170 void release_metadata_field_put(int offset, Metadata* value);
171
172 jbyte byte_field(int offset) const;
173 void byte_field_put(int offset, jbyte contents);
174
175 jchar char_field(int offset) const;
176 void char_field_put(int offset, jchar contents);
|
137
138 template <typename T> inline size_t field_offset(T* p) const;
139
140 // Standard compare function returns negative value if o1 < o2
141 // 0 if o1 == o2
142 // positive value if o1 > o2
143 inline static int compare(oop o1, oop o2) {
144 void* o1_addr = (void*)o1;
145 void* o2_addr = (void*)o2;
146 if (o1_addr < o2_addr) {
147 return -1;
148 } else if (o1_addr > o2_addr) {
149 return 1;
150 } else {
151 return 0;
152 }
153 }
154
155 inline static bool equals(oop o1, oop o2) { return Access<>::equals(o1, o2); }
156
157 inline static bool equals_raw(oop o1, oop o2) { return RawAccess<>::equals(o1, o2); }
158
159 // Access to fields in a instanceOop through these methods.
160 template <DecoratorSet decorator>
161 oop obj_field_access(int offset) const;
162 oop obj_field(int offset) const;
163 void obj_field_put(int offset, oop value);
164 void obj_field_put_raw(int offset, oop value);
165 void obj_field_put_volatile(int offset, oop value);
166
167 Metadata* metadata_field(int offset) const;
168 Metadata* metadata_field_raw(int offset) const;
169 void metadata_field_put(int offset, Metadata* value);
170
171 Metadata* metadata_field_acquire(int offset) const;
172 void release_metadata_field_put(int offset, Metadata* value);
173
174 jbyte byte_field(int offset) const;
175 void byte_field_put(int offset, jbyte contents);
176
177 jchar char_field(int offset) const;
178 void char_field_put(int offset, jchar contents);
|