< prev index next >

src/hotspot/share/oops/oop.hpp

Print this page




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


< prev index next >