< 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); }
< prev index next >