< 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();
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();
}
}
public:
// Has this klass been initialized?
bool is_initialized() {
! update_if_shared(InstanceKlass::fully_initialized);
! return _init_state == InstanceKlass::fully_initialized;
}
bool is_not_initialized() {
! update_if_shared(InstanceKlass::fully_initialized);
! return _init_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;
}
// Has this klass been linked?
bool is_linked() {
! update_if_shared(InstanceKlass::linked);
! return _init_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;
}
// General klass information.
ciFlags flags() {
assert(is_loaded(), "must be loaded");
ciConstantPoolCache* field_cache();
bool is_shared() { return _is_shared; }
! 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
! 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() {
! InstanceKlass::ClassState state = update_if_shared();
! return state == InstanceKlass::fully_initialized;
}
bool is_not_initialized() {
! InstanceKlass::ClassState state = update_if_shared();
! return state < InstanceKlass::being_initialized;
}
// Is this klass being initialized?
bool is_being_initialized() {
! InstanceKlass::ClassState state = update_if_shared();
! return state == InstanceKlass::being_initialized;
}
// Has this klass been linked?
bool is_linked() {
! InstanceKlass::ClassState state = update_if_shared();
! return state >= InstanceKlass::linked;
}
// Is this klass in error state?
bool is_in_error_state() {
! 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 >