Mercurial > hg > truffle
comparison src/share/vm/ci/ciInstanceKlass.hpp @ 44:52fed2ec0afb
6667620: (Escape Analysis) fix deoptimization for scalar replaced objects
Summary: Deoptimization code for reallocation and relocking scalar replaced objects has to be fixed.
Reviewed-by: rasbold, never
author | kvn |
---|---|
date | Tue, 11 Mar 2008 11:25:13 -0700 |
parents | a61af66fc99e |
children | ba764ed4b6f2 |
comparison
equal
deleted
inserted
replaced
43:d821d920b465 | 44:52fed2ec0afb |
---|---|
44 bool _is_linked; | 44 bool _is_linked; |
45 bool _has_finalizer; | 45 bool _has_finalizer; |
46 bool _has_subklass; | 46 bool _has_subklass; |
47 ciFlags _flags; | 47 ciFlags _flags; |
48 jint _nonstatic_field_size; | 48 jint _nonstatic_field_size; |
49 jint _nonstatic_oop_map_size; | |
49 | 50 |
50 // Lazy fields get filled in only upon request. | 51 // Lazy fields get filled in only upon request. |
51 ciInstanceKlass* _super; | 52 ciInstanceKlass* _super; |
52 ciInstance* _java_mirror; | 53 ciInstance* _java_mirror; |
53 | 54 |
55 GrowableArray<ciField*>* _nonstatic_fields; | 56 GrowableArray<ciField*>* _nonstatic_fields; |
56 | 57 |
57 enum { implementors_limit = instanceKlass::implementors_limit }; | 58 enum { implementors_limit = instanceKlass::implementors_limit }; |
58 ciInstanceKlass* _implementors[implementors_limit]; | 59 ciInstanceKlass* _implementors[implementors_limit]; |
59 jint _nof_implementors; | 60 jint _nof_implementors; |
61 | |
62 GrowableArray<ciField*>* _non_static_fields; | |
60 | 63 |
61 protected: | 64 protected: |
62 ciInstanceKlass(KlassHandle h_k); | 65 ciInstanceKlass(KlassHandle h_k); |
63 ciInstanceKlass(ciSymbol* name, jobject loader, jobject protection_domain); | 66 ciInstanceKlass(ciSymbol* name, jobject loader, jobject protection_domain); |
64 | 67 |
127 >> LogHeapWordSize); | 130 >> LogHeapWordSize); |
128 } | 131 } |
129 jint nonstatic_field_size() { | 132 jint nonstatic_field_size() { |
130 assert(is_loaded(), "must be loaded"); | 133 assert(is_loaded(), "must be loaded"); |
131 return _nonstatic_field_size; } | 134 return _nonstatic_field_size; } |
135 jint nonstatic_oop_map_size() { | |
136 assert(is_loaded(), "must be loaded"); | |
137 return _nonstatic_oop_map_size; } | |
132 ciInstanceKlass* super(); | 138 ciInstanceKlass* super(); |
133 jint nof_implementors() { | 139 jint nof_implementors() { |
134 assert(is_loaded(), "must be loaded"); | 140 assert(is_loaded(), "must be loaded"); |
135 if (_is_shared) return compute_shared_nof_implementors(); | 141 if (_is_shared) return compute_shared_nof_implementors(); |
136 return _nof_implementors; | 142 return _nof_implementors; |
137 } | 143 } |
138 | 144 |
139 ciInstanceKlass* get_canonical_holder(int offset); | 145 ciInstanceKlass* get_canonical_holder(int offset); |
140 ciField* get_field_by_offset(int field_offset, bool is_static); | 146 ciField* get_field_by_offset(int field_offset, bool is_static); |
147 | |
148 GrowableArray<ciField*>* non_static_fields(); | |
149 | |
141 // total number of nonstatic fields (including inherited): | 150 // total number of nonstatic fields (including inherited): |
142 int nof_nonstatic_fields() { | 151 int nof_nonstatic_fields() { |
143 if (_nonstatic_fields == NULL) | 152 if (_nonstatic_fields == NULL) |
144 return compute_nonstatic_fields(); | 153 return compute_nonstatic_fields(); |
145 else | 154 else |