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