168 impl = implementor();
169 if (impl == NULL) {
170 return 0;
171 } else if (impl != this) {
172 return 1;
173 } else {
174 return 2;
175 }
176 }
177 bool has_default_methods() {
178 assert(is_loaded(), "must be loaded");
179 return _has_default_methods;
180 }
181
182 bool is_anonymous() {
183 return _is_anonymous;
184 }
185
186 ciInstanceKlass* get_canonical_holder(int offset);
187 ciField* get_field_by_offset(int field_offset, bool is_static);
188 ciField* get_field_by_name(ciSymbol* name, ciSymbol* signature, bool is_static);
189
190 // total number of nonstatic fields (including inherited):
191 int nof_nonstatic_fields() {
192 if (_nonstatic_fields == NULL)
193 return compute_nonstatic_fields();
194 else
195 return _nonstatic_fields->length();
196 }
197
198 bool has_injected_fields() {
199 if (_has_injected_fields == -1) {
200 compute_injected_fields();
201 }
202 return _has_injected_fields > 0 ? true : false;
203 }
204
205 // nth nonstatic field (presented by ascending address)
206 ciField* nonstatic_field_at(int i) {
207 assert(_nonstatic_fields != NULL, "");
208 return _nonstatic_fields->at(i);
209 }
210
211 ciInstanceKlass* unique_concrete_subklass();
212 bool has_finalizable_subclass();
213
214 bool contains_field_offset(int offset) {
215 return instanceOopDesc::contains_field_offset(offset, nonstatic_field_size());
216 }
217
218 // Get the instance of java.lang.Class corresponding to
219 // this klass. This instance is used for locking of
220 // synchronized static methods of this klass.
221 ciInstance* java_mirror();
222
223 // Java access flags
224 bool is_public () { return flags().is_public(); }
225 bool is_final () { return flags().is_final(); }
226 bool is_super () { return flags().is_super(); }
227 bool is_interface () { return flags().is_interface(); }
228 bool is_abstract () { return flags().is_abstract(); }
229
230 ciMethod* find_method(ciSymbol* name, ciSymbol* signature);
231 // Note: To find a method from name and type strings, use ciSymbol::make,
232 // but consider adding to vmSymbols.hpp instead.
233
234 bool is_leaf_type();
235 ciInstanceKlass* implementor();
|
168 impl = implementor();
169 if (impl == NULL) {
170 return 0;
171 } else if (impl != this) {
172 return 1;
173 } else {
174 return 2;
175 }
176 }
177 bool has_default_methods() {
178 assert(is_loaded(), "must be loaded");
179 return _has_default_methods;
180 }
181
182 bool is_anonymous() {
183 return _is_anonymous;
184 }
185
186 ciInstanceKlass* get_canonical_holder(int offset);
187 ciField* get_field_by_offset(int field_offset, bool is_static);
188 ciType* get_field_type_by_offset(int field_offset);
189 ciField* get_field_by_name(ciSymbol* name, ciSymbol* signature, bool is_static);
190
191 // total number of nonstatic fields (including inherited):
192 int nof_nonstatic_fields() {
193 if (_nonstatic_fields == NULL)
194 return compute_nonstatic_fields();
195 else
196 return _nonstatic_fields->length();
197 }
198
199 bool has_injected_fields() {
200 if (_has_injected_fields == -1) {
201 compute_injected_fields();
202 }
203 return _has_injected_fields > 0 ? true : false;
204 }
205
206 // nth nonstatic field (presented by ascending address)
207 ciField* nonstatic_field_at(int i) {
208 assert(_nonstatic_fields != NULL, "");
209 return _nonstatic_fields->at(i);
210 }
211
212 ciInstanceKlass* unique_concrete_subklass();
213 bool has_finalizable_subclass();
214
215 bool contains_field_offset(int offset) {
216 return instanceOopDesc::contains_field_offset(offset, nonstatic_field_size(), is_valuetype());
217 }
218
219 // Get the instance of java.lang.Class corresponding to
220 // this klass. This instance is used for locking of
221 // synchronized static methods of this klass.
222 ciInstance* java_mirror();
223
224 // Java access flags
225 bool is_public () { return flags().is_public(); }
226 bool is_final () { return flags().is_final(); }
227 bool is_super () { return flags().is_super(); }
228 bool is_interface () { return flags().is_interface(); }
229 bool is_abstract () { return flags().is_abstract(); }
230
231 ciMethod* find_method(ciSymbol* name, ciSymbol* signature);
232 // Note: To find a method from name and type strings, use ciSymbol::make,
233 // but consider adding to vmSymbols.hpp instead.
234
235 bool is_leaf_type();
236 ciInstanceKlass* implementor();
|