< prev index next >
src/hotspot/share/ci/ciInstanceKlass.hpp
Print this page
@@ -64,19 +64,21 @@
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,10 +202,17 @@
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 >