99
100 void print_impl(outputStream* st);
101
102 ciConstantPoolCache* field_cache();
103
104 bool is_shared() { return _is_shared; }
105
106 void compute_shared_init_state();
107 bool compute_shared_has_subklass();
108 int compute_nonstatic_fields();
109 GrowableArray<ciField*>* compute_nonstatic_fields_impl(GrowableArray<ciField*>* super_fields);
110 bool compute_has_trusted_loader();
111
112 // Update the init_state for shared klasses
113 void update_if_shared(InstanceKlass::ClassState expected) {
114 if (_is_shared && _init_state != expected) {
115 if (is_loaded()) compute_shared_init_state();
116 }
117 }
118
119 public:
120 // Has this klass been initialized?
121 bool is_initialized() {
122 update_if_shared(InstanceKlass::fully_initialized);
123 return _init_state == InstanceKlass::fully_initialized;
124 }
125 bool is_not_initialized() {
126 update_if_shared(InstanceKlass::fully_initialized);
127 return _init_state < InstanceKlass::being_initialized;
128 }
129 // Is this klass being initialized?
130 bool is_being_initialized() {
131 update_if_shared(InstanceKlass::being_initialized);
132 return _init_state == InstanceKlass::being_initialized;
133 }
134 // Has this klass been linked?
135 bool is_linked() {
136 update_if_shared(InstanceKlass::linked);
137 return _init_state >= InstanceKlass::linked;
138 }
|
99
100 void print_impl(outputStream* st);
101
102 ciConstantPoolCache* field_cache();
103
104 bool is_shared() { return _is_shared; }
105
106 void compute_shared_init_state();
107 bool compute_shared_has_subklass();
108 int compute_nonstatic_fields();
109 GrowableArray<ciField*>* compute_nonstatic_fields_impl(GrowableArray<ciField*>* super_fields);
110 bool compute_has_trusted_loader();
111
112 // Update the init_state for shared klasses
113 void update_if_shared(InstanceKlass::ClassState expected) {
114 if (_is_shared && _init_state != expected) {
115 if (is_loaded()) compute_shared_init_state();
116 }
117 }
118
119 static InstanceKlass::ClassState compute_init_state(InstanceKlass* ik);
120
121 public:
122 // Has this klass been initialized?
123 bool is_initialized() {
124 update_if_shared(InstanceKlass::fully_initialized);
125 return _init_state == InstanceKlass::fully_initialized;
126 }
127 bool is_not_initialized() {
128 update_if_shared(InstanceKlass::fully_initialized);
129 return _init_state < InstanceKlass::being_initialized;
130 }
131 // Is this klass being initialized?
132 bool is_being_initialized() {
133 update_if_shared(InstanceKlass::being_initialized);
134 return _init_state == InstanceKlass::being_initialized;
135 }
136 // Has this klass been linked?
137 bool is_linked() {
138 update_if_shared(InstanceKlass::linked);
139 return _init_state >= InstanceKlass::linked;
140 }
|