172 if (impl == NULL) { 173 return 0; 174 } else if (impl != this) { 175 return 1; 176 } else { 177 return 2; 178 } 179 } 180 bool has_nonstatic_concrete_methods() { 181 assert(is_loaded(), "must be loaded"); 182 return _has_nonstatic_concrete_methods; 183 } 184 185 bool is_unsafe_anonymous() { 186 return _is_unsafe_anonymous; 187 } 188 189 ciInstanceKlass* get_canonical_holder(int offset); 190 ciField* get_field_by_offset(int field_offset, bool is_static); 191 ciField* get_field_by_name(ciSymbol* name, ciSymbol* signature, bool is_static); 192 193 // total number of nonstatic fields (including inherited): 194 int nof_nonstatic_fields() { 195 if (_nonstatic_fields == NULL) { 196 return compute_nonstatic_fields(); 197 } else { 198 return _nonstatic_fields->length(); 199 } 200 } 201 202 bool has_injected_fields() { 203 if (_has_injected_fields == -1) { 204 compute_injected_fields(); 205 } 206 return _has_injected_fields > 0 ? true : false; 207 } 208 209 bool has_object_fields() const; 210 211 // nth nonstatic field (presented by ascending address) | 172 if (impl == NULL) { 173 return 0; 174 } else if (impl != this) { 175 return 1; 176 } else { 177 return 2; 178 } 179 } 180 bool has_nonstatic_concrete_methods() { 181 assert(is_loaded(), "must be loaded"); 182 return _has_nonstatic_concrete_methods; 183 } 184 185 bool is_unsafe_anonymous() { 186 return _is_unsafe_anonymous; 187 } 188 189 ciInstanceKlass* get_canonical_holder(int offset); 190 ciField* get_field_by_offset(int field_offset, bool is_static); 191 ciField* get_field_by_name(ciSymbol* name, ciSymbol* signature, bool is_static); 192 // get field descriptor at field_offset ignoring flattening 193 ciField* get_non_flattened_field_by_offset(int field_offset); 194 195 // total number of nonstatic fields (including inherited): 196 int nof_nonstatic_fields() { 197 if (_nonstatic_fields == NULL) { 198 return compute_nonstatic_fields(); 199 } else { 200 return _nonstatic_fields->length(); 201 } 202 } 203 204 bool has_injected_fields() { 205 if (_has_injected_fields == -1) { 206 compute_injected_fields(); 207 } 208 return _has_injected_fields > 0 ? true : false; 209 } 210 211 bool has_object_fields() const; 212 213 // nth nonstatic field (presented by ascending address) |