< prev index next >

src/hotspot/share/oops/instanceOop.hpp

Print this page




  29 
  30 // An instanceOop is an instance of a Java Class
  31 // Evaluating "new HashTable()" will create an instanceOop.
  32 
  33 class instanceOopDesc : public oopDesc {
  34  public:
  35   // aligned header size.
  36   static int header_size() { return sizeof(instanceOopDesc)/HeapWordSize; }
  37 
  38   // If compressed, the offset of the fields of the instance may not be aligned.
  39   static int base_offset_in_bytes() {
  40     // offset computation code breaks if UseCompressedClassPointers
  41     // only is true
  42     return (UseCompressedOops && UseCompressedClassPointers) ?
  43              klass_gap_offset_in_bytes() :
  44              sizeof(instanceOopDesc);
  45   }
  46 
  47   static bool contains_field_offset(int offset, int nonstatic_field_size, bool is_value) {
  48     int base_in_bytes = base_offset_in_bytes();
  49     if (is_value) {
  50       // The first field of value types is aligned on a long boundary
  51       base_in_bytes = align_up(base_in_bytes, BytesPerLong);
  52     }
  53     return (offset >= base_in_bytes &&
  54             (offset-base_in_bytes) < nonstatic_field_size * heapOopSize);
  55   }
  56 };
  57 
  58 #endif // SHARE_OOPS_INSTANCEOOP_HPP


  29 
  30 // An instanceOop is an instance of a Java Class
  31 // Evaluating "new HashTable()" will create an instanceOop.
  32 
  33 class instanceOopDesc : public oopDesc {
  34  public:
  35   // aligned header size.
  36   static int header_size() { return sizeof(instanceOopDesc)/HeapWordSize; }
  37 
  38   // If compressed, the offset of the fields of the instance may not be aligned.
  39   static int base_offset_in_bytes() {
  40     // offset computation code breaks if UseCompressedClassPointers
  41     // only is true
  42     return (UseCompressedOops && UseCompressedClassPointers) ?
  43              klass_gap_offset_in_bytes() :
  44              sizeof(instanceOopDesc);
  45   }
  46 
  47   static bool contains_field_offset(int offset, int nonstatic_field_size, bool is_value) {
  48     int base_in_bytes = base_offset_in_bytes();
  49     if (is_value && !UseNewLayout) {
  50       // The first field of value types is aligned on a long boundary
  51       base_in_bytes = align_up(base_in_bytes, BytesPerLong);
  52     }
  53     return (offset >= base_in_bytes &&
  54             (offset-base_in_bytes) < nonstatic_field_size * heapOopSize);
  55   }
  56 };
  57 
  58 #endif // SHARE_OOPS_INSTANCEOOP_HPP
< prev index next >