hotspot/src/share/vm/oops/instanceKlass.hpp
changeset 46505 fd4bc78630b1
parent 46502 116a09d8f142
child 46618 d503911aa948
equal deleted inserted replaced
46504:38048d4d20e7 46505:fd4bc78630b1
    64 class DependencyContext;
    64 class DependencyContext;
    65 class fieldDescriptor;
    65 class fieldDescriptor;
    66 class jniIdMapBase;
    66 class jniIdMapBase;
    67 class JNIid;
    67 class JNIid;
    68 class JvmtiCachedClassFieldMap;
    68 class JvmtiCachedClassFieldMap;
    69 class MemberNameTable;
       
    70 class SuperTypeClosure;
    69 class SuperTypeClosure;
    71 
    70 
    72 // This is used in iterators below.
    71 // This is used in iterators below.
    73 class FieldClosure: public StackObj {
    72 class FieldClosure: public StackObj {
    74 public:
    73 public:
   217     _misc_has_passed_fingerprint_check        = 1 << 10, // when this class was loaded, the fingerprint computed from its
   216     _misc_has_passed_fingerprint_check        = 1 << 10, // when this class was loaded, the fingerprint computed from its
   218                                                          // code source was found to be matching the value recorded by AOT.
   217                                                          // code source was found to be matching the value recorded by AOT.
   219     _misc_is_scratch_class                    = 1 << 11, // class is the redefined scratch class
   218     _misc_is_scratch_class                    = 1 << 11, // class is the redefined scratch class
   220     _misc_is_shared_boot_class                = 1 << 12, // defining class loader is boot class loader
   219     _misc_is_shared_boot_class                = 1 << 12, // defining class loader is boot class loader
   221     _misc_is_shared_platform_class            = 1 << 13, // defining class loader is platform class loader
   220     _misc_is_shared_platform_class            = 1 << 13, // defining class loader is platform class loader
   222     _misc_is_shared_app_class                 = 1 << 14  // defining class loader is app class loader
   221     _misc_is_shared_app_class                 = 1 << 14, // defining class loader is app class loader
       
   222     _misc_has_resolved_methods                = 1 << 15  // resolved methods table entries added for this class
   223   };
   223   };
   224   u2 loader_type_bits() {
   224   u2 loader_type_bits() {
   225     return _misc_is_shared_boot_class|_misc_is_shared_platform_class|_misc_is_shared_app_class;
   225     return _misc_is_shared_boot_class|_misc_is_shared_platform_class|_misc_is_shared_app_class;
   226   }
   226   }
   227   u2              _misc_flags;
   227   u2              _misc_flags;
   228   u2              _minor_version;        // minor version number of class file
   228   u2              _minor_version;        // minor version number of class file
   229   u2              _major_version;        // major version number of class file
   229   u2              _major_version;        // major version number of class file
   230   Thread*         _init_thread;          // Pointer to current thread doing initialization (to handle recusive initialization)
   230   Thread*         _init_thread;          // Pointer to current thread doing initialization (to handle recusive initialization)
   231   OopMapCache*    volatile _oop_map_cache;   // OopMapCache for all methods in the klass (allocated lazily)
   231   OopMapCache*    volatile _oop_map_cache;   // OopMapCache for all methods in the klass (allocated lazily)
   232   MemberNameTable* _member_names;        // Member names
       
   233   JNIid*          _jni_ids;              // First JNI identifier for static fields in this class
   232   JNIid*          _jni_ids;              // First JNI identifier for static fields in this class
   234   jmethodID*      volatile _methods_jmethod_ids;  // jmethodIDs corresponding to method_idnum, or NULL if none
   233   jmethodID*      volatile _methods_jmethod_ids;  // jmethodIDs corresponding to method_idnum, or NULL if none
   235   intptr_t        _dep_context;          // packed DependencyContext structure
   234   intptr_t        _dep_context;          // packed DependencyContext structure
   236   nmethod*        _osr_nmethods_head;    // Head of list of on-stack replacement nmethods for this class
   235   nmethod*        _osr_nmethods_head;    // Head of list of on-stack replacement nmethods for this class
   237 #if INCLUDE_JVMTI
   236 #if INCLUDE_JVMTI
   745 
   744 
   746   void set_is_scratch_class() {
   745   void set_is_scratch_class() {
   747     _misc_flags |= _misc_is_scratch_class;
   746     _misc_flags |= _misc_is_scratch_class;
   748   }
   747   }
   749 
   748 
       
   749   bool has_resolved_methods() const {
       
   750     return (_misc_flags & _misc_has_resolved_methods) != 0;
       
   751   }
       
   752 
       
   753   void set_has_resolved_methods() {
       
   754     _misc_flags |= _misc_has_resolved_methods;
       
   755   }
   750 private:
   756 private:
   751 
   757 
   752   void set_kind(unsigned kind) {
   758   void set_kind(unsigned kind) {
   753     assert(kind <= _misc_kind_field_mask, "Invalid InstanceKlass kind");
   759     assert(kind <= _misc_kind_field_mask, "Invalid InstanceKlass kind");
   754     unsigned fmask = _misc_kind_field_mask << _misc_kind_field_pos;
   760     unsigned fmask = _misc_kind_field_mask << _misc_kind_field_pos;
  1331   virtual void remove_unshareable_info();
  1337   virtual void remove_unshareable_info();
  1332   virtual void restore_unshareable_info(ClassLoaderData* loader_data, Handle protection_domain, TRAPS);
  1338   virtual void restore_unshareable_info(ClassLoaderData* loader_data, Handle protection_domain, TRAPS);
  1333 
  1339 
  1334   // jvm support
  1340   // jvm support
  1335   jint compute_modifier_flags(TRAPS) const;
  1341   jint compute_modifier_flags(TRAPS) const;
  1336 
       
  1337   // JSR-292 support
       
  1338   MemberNameTable* member_names() { return _member_names; }
       
  1339   void set_member_names(MemberNameTable* member_names) { _member_names = member_names; }
       
  1340   oop add_member_name(Handle member_name, bool intern);
       
  1341 
  1342 
  1342 public:
  1343 public:
  1343   // JVMTI support
  1344   // JVMTI support
  1344   jint jvmti_class_status() const;
  1345   jint jvmti_class_status() const;
  1345 
  1346