203 Symbol* _source_file_name; 204 // the source debug extension for this klass, NULL if not specified. 205 // Specified as UTF-8 string without terminating zero byte in the classfile, 206 // it is stored in the instanceklass as a NULL-terminated UTF-8 string 207 char* _source_debug_extension; 208 // Generic signature, or null if none. 209 Symbol* _generic_signature; 210 // Array name derived from this class which needs unreferencing 211 // if this class is unloaded. 212 Symbol* _array_name; 213 214 // Number of heapOopSize words used by non-static fields in this klass 215 // (including inherited fields but after header_size()). 216 int _nonstatic_field_size; 217 int _static_field_size; // number words used by static fields (oop and non-oop) in this klass 218 u2 _static_oop_field_count;// number of static oop fields in this klass 219 u2 _java_fields_count; // The number of declared Java fields 220 int _nonstatic_oop_map_size;// size in words of nonstatic oop map blocks 221 222 bool _is_marked_dependent; // used for marking during flushing and deoptimization 223 enum { 224 _misc_rewritten = 1 << 0, // methods rewritten. 225 _misc_has_nonstatic_fields = 1 << 1, // for sizing with UseCompressedOops 226 _misc_should_verify_class = 1 << 2, // allow caching of preverification 227 _misc_is_anonymous = 1 << 3 // has embedded _inner_classes field 228 }; 229 u2 _misc_flags; 230 u2 _minor_version; // minor version number of class file 231 u2 _major_version; // major version number of class file 232 Thread* _init_thread; // Pointer to current thread doing initialization (to handle recusive initialization) 233 int _vtable_len; // length of Java vtable (in words) 234 int _itable_len; // length of Java itable (in words) 235 OopMapCache* volatile _oop_map_cache; // OopMapCache for all methods in the klass (allocated lazily) 236 JNIid* _jni_ids; // First JNI identifier for static fields in this class 237 jmethodID* _methods_jmethod_ids; // jmethodIDs corresponding to method_idnum, or NULL if none 238 int* _methods_cached_itable_indices; // itable_index cache for JNI invoke corresponding to methods idnum, or NULL 239 nmethodBucket* _dependencies; // list of dependent nmethods 240 nmethod* _osr_nmethods_head; // Head of list of on-stack replacement nmethods for this class 241 BreakpointInfo* _breakpoints; // bpt lists, managed by Method* 242 // Array of interesting part(s) of the previous version(s) of this 243 // InstanceKlass. See PreviousVersionWalker below. 244 GrowableArray<PreviousVersionNode *>* _previous_versions; 245 // JVMTI fields can be moved to their own structure - see 6315920 246 unsigned char * _cached_class_file_bytes; // JVMTI: cached class file, before retransformable agent modified it in CFLH 247 jint _cached_class_file_len; // JVMTI: length of above 248 JvmtiCachedClassFieldMap* _jvmti_cached_class_field_map; // JVMTI: used during heap iteration 249 250 // true if class, superclass, or implemented interfaces have default methods 251 bool _has_default_methods; 252 253 volatile u2 _idnum_allocated_count; // JNI/JVMTI: increments with the addition of methods, old ids don't change 254 // Method array. 255 Array<Method*>* _methods; 256 // Interface (Klass*s) this class declares locally to implement. 257 Array<Klass*>* _local_interfaces; 258 // Interface (Klass*s) this class implements transitively. 259 Array<Klass*>* _transitive_interfaces; 260 // Int array containing the original order of method in the class file (for JVMTI). 261 Array<int>* _method_ordering; 262 // Instance and static variable information, starts with 6-tuples of shorts 263 // [access, name index, sig index, initval index, low_offset, high_offset] 264 // for all fields, followed by the generic signature data at the end of 265 // the array. Only fields with generic signature attributes have the generic 266 // signature data set in the array. The fields array looks like following: 267 // 268 // f1: [access, name index, sig index, initial value index, low_offset, high_offset] 269 // f2: [access, name index, sig index, initial value index, low_offset, high_offset] 270 // ... 271 // fn: [access, name index, sig index, initial value index, low_offset, high_offset] 272 // [generic signature index] 273 // [generic signature index] 274 // ... 275 Array<u2>* _fields; 276 277 // Class states are defined as ClassState (see above). 278 // Place the _init_state here to utilize the unused 2-byte after 279 // _idnum_allocated_count. 280 u1 _init_state; // state of class 281 282 u1 _reference_type; // reference type 283 284 // embedded Java vtable follows here 285 // embedded Java itables follows here 286 // embedded static fields follows here 287 // embedded nonstatic oop-map blocks follows here 288 // embedded implementor of this interface follows here 289 // The embedded implementor only exists if the current klass is an 290 // iterface. The possible values of the implementor fall into following 291 // three cases: 292 // NULL: no implementor. 293 // A Klass* that's not itself: one implementor. 294 // Itsef: more than one implementors. 295 // embedded host klass follows here 296 // The embedded host klass only exists in an anonymous class for | 203 Symbol* _source_file_name; 204 // the source debug extension for this klass, NULL if not specified. 205 // Specified as UTF-8 string without terminating zero byte in the classfile, 206 // it is stored in the instanceklass as a NULL-terminated UTF-8 string 207 char* _source_debug_extension; 208 // Generic signature, or null if none. 209 Symbol* _generic_signature; 210 // Array name derived from this class which needs unreferencing 211 // if this class is unloaded. 212 Symbol* _array_name; 213 214 // Number of heapOopSize words used by non-static fields in this klass 215 // (including inherited fields but after header_size()). 216 int _nonstatic_field_size; 217 int _static_field_size; // number words used by static fields (oop and non-oop) in this klass 218 u2 _static_oop_field_count;// number of static oop fields in this klass 219 u2 _java_fields_count; // The number of declared Java fields 220 int _nonstatic_oop_map_size;// size in words of nonstatic oop map blocks 221 222 bool _is_marked_dependent; // used for marking during flushing and deoptimization 223 // true if class, superclass, or implemented interfaces have default methods 224 bool _has_default_methods; 225 226 enum { 227 _misc_rewritten = 1 << 0, // methods rewritten. 228 _misc_has_nonstatic_fields = 1 << 1, // for sizing with UseCompressedOops 229 _misc_should_verify_class = 1 << 2, // allow caching of preverification 230 _misc_is_anonymous = 1 << 3 // has embedded _inner_classes field 231 }; 232 u2 _misc_flags; 233 u2 _minor_version; // minor version number of class file 234 u2 _major_version; // major version number of class file 235 Thread* _init_thread; // Pointer to current thread doing initialization (to handle recusive initialization) 236 int _vtable_len; // length of Java vtable (in words) 237 int _itable_len; // length of Java itable (in words) 238 OopMapCache* volatile _oop_map_cache; // OopMapCache for all methods in the klass (allocated lazily) 239 JNIid* _jni_ids; // First JNI identifier for static fields in this class 240 jmethodID* _methods_jmethod_ids; // jmethodIDs corresponding to method_idnum, or NULL if none 241 int* _methods_cached_itable_indices; // itable_index cache for JNI invoke corresponding to methods idnum, or NULL 242 nmethodBucket* _dependencies; // list of dependent nmethods 243 nmethod* _osr_nmethods_head; // Head of list of on-stack replacement nmethods for this class 244 BreakpointInfo* _breakpoints; // bpt lists, managed by Method* 245 // Array of interesting part(s) of the previous version(s) of this 246 // InstanceKlass. See PreviousVersionWalker below. 247 GrowableArray<PreviousVersionNode *>* _previous_versions; 248 // JVMTI fields can be moved to their own structure - see 6315920 249 unsigned char * _cached_class_file_bytes; // JVMTI: cached class file, before retransformable agent modified it in CFLH 250 jint _cached_class_file_len; // JVMTI: length of above 251 JvmtiCachedClassFieldMap* _jvmti_cached_class_field_map; // JVMTI: used during heap iteration 252 253 // Method array. 254 Array<Method*>* _methods; 255 // Interface (Klass*s) this class declares locally to implement. 256 Array<Klass*>* _local_interfaces; 257 // Interface (Klass*s) this class implements transitively. 258 Array<Klass*>* _transitive_interfaces; 259 // Int array containing the original order of method in the class file (for JVMTI). 260 Array<int>* _method_ordering; 261 // Instance and static variable information, starts with 6-tuples of shorts 262 // [access, name index, sig index, initval index, low_offset, high_offset] 263 // for all fields, followed by the generic signature data at the end of 264 // the array. Only fields with generic signature attributes have the generic 265 // signature data set in the array. The fields array looks like following: 266 // 267 // f1: [access, name index, sig index, initial value index, low_offset, high_offset] 268 // f2: [access, name index, sig index, initial value index, low_offset, high_offset] 269 // ... 270 // fn: [access, name index, sig index, initial value index, low_offset, high_offset] 271 // [generic signature index] 272 // [generic signature index] 273 // ... 274 Array<u2>* _fields; 275 276 volatile u2 _idnum_allocated_count; // JNI/JVMTI: increments with the addition of methods, old ids don't change 277 278 // Class states are defined as ClassState (see above). 279 // Place the _init_state here to utilize the unused 2-byte after 280 // _idnum_allocated_count. 281 u1 _init_state; // state of class 282 283 u1 _reference_type; // reference type 284 285 // embedded Java vtable follows here 286 // embedded Java itables follows here 287 // embedded static fields follows here 288 // embedded nonstatic oop-map blocks follows here 289 // embedded implementor of this interface follows here 290 // The embedded implementor only exists if the current klass is an 291 // iterface. The possible values of the implementor fall into following 292 // three cases: 293 // NULL: no implementor. 294 // A Klass* that's not itself: one implementor. 295 // Itsef: more than one implementors. 296 // embedded host klass follows here 297 // The embedded host klass only exists in an anonymous class for |