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
|