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 unsafe_equals(oop o1, oop o2) {
158 return (void*) o1 == (void*) o2;
159 }
160
161 // Access to fields in a instanceOop through these methods.
162 template <DecoratorSet decorator>
163 oop obj_field_access(int offset) const;
164 oop obj_field(int offset) const;
165 void obj_field_put(int offset, oop value);
166 void obj_field_put_raw(int offset, oop value);
167 void obj_field_put_volatile(int offset, oop value);
168
169 Metadata* metadata_field(int offset) const;
170 Metadata* metadata_field_raw(int offset) const;
171 void metadata_field_put(int offset, Metadata* value);
172
173 Metadata* metadata_field_acquire(int offset) const;
174 void release_metadata_field_put(int offset, Metadata* value);
175
176 jbyte byte_field(int offset) const;
177 void byte_field_put(int offset, jbyte contents);
178
179 jchar char_field(int offset) const;
180 void char_field_put(int offset, jchar contents);
|