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); |