Mercurial > hg > truffle
comparison src/share/vm/ci/ciInstanceKlass.hpp @ 113:ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv
Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author | coleenp |
---|---|
date | Sun, 13 Apr 2008 17:43:42 -0400 |
parents | 52fed2ec0afb |
children | d1605aabd0a1 |
comparison
equal
deleted
inserted
replaced
110:a49a647afe9a | 113:ba764ed4b6f2 |
---|---|
33 friend class ciMethod; | 33 friend class ciMethod; |
34 friend class ciField; | 34 friend class ciField; |
35 friend class ciBytecodeStream; | 35 friend class ciBytecodeStream; |
36 | 36 |
37 private: | 37 private: |
38 bool _is_shared; | |
39 | |
40 jobject _loader; | 38 jobject _loader; |
41 jobject _protection_domain; | 39 jobject _protection_domain; |
42 | 40 |
41 bool _is_shared; | |
43 bool _is_initialized; | 42 bool _is_initialized; |
44 bool _is_linked; | 43 bool _is_linked; |
45 bool _has_finalizer; | 44 bool _has_finalizer; |
46 bool _has_subklass; | 45 bool _has_subklass; |
46 bool _has_nonstatic_fields; | |
47 | |
47 ciFlags _flags; | 48 ciFlags _flags; |
48 jint _nonstatic_field_size; | 49 jint _nonstatic_field_size; |
49 jint _nonstatic_oop_map_size; | 50 jint _nonstatic_oop_map_size; |
50 | 51 |
51 // Lazy fields get filled in only upon request. | 52 // Lazy fields get filled in only upon request. |
130 >> LogHeapWordSize); | 131 >> LogHeapWordSize); |
131 } | 132 } |
132 jint nonstatic_field_size() { | 133 jint nonstatic_field_size() { |
133 assert(is_loaded(), "must be loaded"); | 134 assert(is_loaded(), "must be loaded"); |
134 return _nonstatic_field_size; } | 135 return _nonstatic_field_size; } |
136 jint has_nonstatic_fields() { | |
137 assert(is_loaded(), "must be loaded"); | |
138 return _has_nonstatic_fields; } | |
135 jint nonstatic_oop_map_size() { | 139 jint nonstatic_oop_map_size() { |
136 assert(is_loaded(), "must be loaded"); | 140 assert(is_loaded(), "must be loaded"); |
137 return _nonstatic_oop_map_size; } | 141 return _nonstatic_oop_map_size; } |
138 ciInstanceKlass* super(); | 142 ciInstanceKlass* super(); |
139 jint nof_implementors() { | 143 jint nof_implementors() { |
162 | 166 |
163 ciInstanceKlass* unique_concrete_subklass(); | 167 ciInstanceKlass* unique_concrete_subklass(); |
164 bool has_finalizable_subclass(); | 168 bool has_finalizable_subclass(); |
165 | 169 |
166 bool contains_field_offset(int offset) { | 170 bool contains_field_offset(int offset) { |
167 return (offset/wordSize) >= instanceOopDesc::header_size() | 171 return instanceOopDesc::contains_field_offset(offset, nonstatic_field_size()); |
168 && (offset/wordSize)-instanceOopDesc::header_size() < nonstatic_field_size(); | |
169 } | 172 } |
170 | 173 |
171 // Get the instance of java.lang.Class corresponding to | 174 // Get the instance of java.lang.Class corresponding to |
172 // this klass. This instance is used for locking of | 175 // this klass. This instance is used for locking of |
173 // synchronized static methods of this klass. | 176 // synchronized static methods of this klass. |