< prev index next >

src/hotspot/share/ci/ciInstanceKlass.hpp

Print this page

        

*** 64,82 **** --- 64,84 ---- ciInstance* _java_mirror; ciConstantPoolCache* _field_cache; // cached map index->field GrowableArray<ciField*>* _nonstatic_fields; int _has_injected_fields; // any non static injected fields? lazily initialized. + int _has_object_fields; // any object fields? lazily initialized. // The possible values of the _implementor fall into following three cases: // NULL: no implementor. // A ciInstanceKlass that's not itself: one implementor. // Itsef: more than one implementors. ciInstanceKlass* _implementor; void compute_injected_fields(); bool compute_injected_fields_helper(); + void compute_object_fields(); protected: ciInstanceKlass(Klass* k); ciInstanceKlass(ciSymbol* name, jobject loader, jobject protection_domain);
*** 200,209 **** --- 202,218 ---- compute_injected_fields(); } return _has_injected_fields > 0 ? true : false; } + bool has_object_fields() { + if (_has_object_fields == -1) { + compute_object_fields(); + } + return _has_object_fields > 0 ? true : false; + } + // nth nonstatic field (presented by ascending address) ciField* nonstatic_field_at(int i) { assert(_nonstatic_fields != NULL, ""); return _nonstatic_fields->at(i); }
*** 267,274 **** --- 276,288 ---- return !is_interface() && !is_abstract(); } // Dump the current state of this klass for compilation replay. virtual void dump_replay_data(outputStream* out); + + #ifdef ASSERT + bool debug_final_field_at(int offset); + bool debug_stable_field_at(int offset); + #endif }; #endif // SHARE_VM_CI_CIINSTANCEKLASS_HPP
< prev index next >