src/share/vm/oops/instanceKlass.hpp

Print this page




 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