< prev index next > src/hotspot/share/ci/ciInstanceKlass.hpp
Print this page
ciConstantPoolCache* field_cache();
bool is_shared() { return _is_shared; }
- void compute_shared_init_state();
+ InstanceKlass::ClassState compute_shared_init_state();
bool compute_shared_has_subklass();
int compute_nonstatic_fields();
GrowableArray<ciField*>* compute_nonstatic_fields_impl(GrowableArray<ciField*>* super_fields);
bool compute_has_trusted_loader();
// Update the init_state for shared klasses
- void update_if_shared(InstanceKlass::ClassState expected) {
- if (_is_shared && _init_state != expected) {
- if (is_loaded()) compute_shared_init_state();
+ InstanceKlass::ClassState update_if_shared() {
+ if (_is_shared && is_loaded()) {
+ return compute_shared_init_state();
}
+ return _init_state;
}
+ static InstanceKlass::ClassState compute_init_state(InstanceKlass* ik);
+
public:
// Has this klass been initialized?
bool is_initialized() {
- update_if_shared(InstanceKlass::fully_initialized);
- return _init_state == InstanceKlass::fully_initialized;
+ InstanceKlass::ClassState state = update_if_shared();
+ return state == InstanceKlass::fully_initialized;
}
bool is_not_initialized() {
- update_if_shared(InstanceKlass::fully_initialized);
- return _init_state < InstanceKlass::being_initialized;
+ InstanceKlass::ClassState state = update_if_shared();
+ return state < InstanceKlass::being_initialized;
}
// Is this klass being initialized?
bool is_being_initialized() {
- update_if_shared(InstanceKlass::being_initialized);
- return _init_state == InstanceKlass::being_initialized;
+ InstanceKlass::ClassState state = update_if_shared();
+ return state == InstanceKlass::being_initialized;
}
// Has this klass been linked?
bool is_linked() {
- update_if_shared(InstanceKlass::linked);
- return _init_state >= InstanceKlass::linked;
+ InstanceKlass::ClassState state = update_if_shared();
+ return state >= InstanceKlass::linked;
}
// Is this klass in error state?
bool is_in_error_state() {
- update_if_shared(InstanceKlass::initialization_error);
- return _init_state == InstanceKlass::initialization_error;
+ InstanceKlass::ClassState state = update_if_shared();
+ return state == InstanceKlass::initialization_error;
}
// General klass information.
ciFlags flags() {
assert(is_loaded(), "must be loaded");
< prev index next >