hotspot/src/share/vm/oops/instanceKlass.hpp
changeset 27402 5c4675ddc00c
parent 26558 b7df27df6384
child 27435 58d1380ceacb
equal deleted inserted replaced
27400:c5955f4b7c84 27402:5c4675ddc00c
   197   // _misc_flags.
   197   // _misc_flags.
   198   bool            _is_marked_dependent;  // used for marking during flushing and deoptimization
   198   bool            _is_marked_dependent;  // used for marking during flushing and deoptimization
   199   bool            _has_unloaded_dependent;
   199   bool            _has_unloaded_dependent;
   200 
   200 
   201   enum {
   201   enum {
   202     _misc_rewritten            = 1 << 0, // methods rewritten.
   202     _misc_rewritten                = 1 << 0, // methods rewritten.
   203     _misc_has_nonstatic_fields = 1 << 1, // for sizing with UseCompressedOops
   203     _misc_has_nonstatic_fields     = 1 << 1, // for sizing with UseCompressedOops
   204     _misc_should_verify_class  = 1 << 2, // allow caching of preverification
   204     _misc_should_verify_class      = 1 << 2, // allow caching of preverification
   205     _misc_is_anonymous         = 1 << 3, // has embedded _host_klass field
   205     _misc_is_anonymous             = 1 << 3, // has embedded _host_klass field
   206     _misc_is_contended         = 1 << 4, // marked with contended annotation
   206     _misc_is_contended             = 1 << 4, // marked with contended annotation
   207     _misc_has_default_methods  = 1 << 5, // class/superclass/implemented interfaces has default methods
   207     _misc_has_default_methods      = 1 << 5, // class/superclass/implemented interfaces has default methods
   208     _misc_has_been_redefined   = 1 << 6  // class has been redefined
   208     _misc_declares_default_methods = 1 << 6, // directly declares default methods (any access)
       
   209     _misc_has_been_redefined       = 1 << 7  // class has been redefined
   209   };
   210   };
   210   u2              _misc_flags;
   211   u2              _misc_flags;
   211   u2              _minor_version;        // minor version number of class file
   212   u2              _minor_version;        // minor version number of class file
   212   u2              _major_version;        // major version number of class file
   213   u2              _major_version;        // major version number of class file
   213   Thread*         _init_thread;          // Pointer to current thread doing initialization (to handle recusive initialization)
   214   Thread*         _init_thread;          // Pointer to current thread doing initialization (to handle recusive initialization)
   649     } else {
   650     } else {
   650       _misc_flags &= ~_misc_has_default_methods;
   651       _misc_flags &= ~_misc_has_default_methods;
   651     }
   652     }
   652   }
   653   }
   653 
   654 
       
   655   bool declares_default_methods() const {
       
   656     return (_misc_flags & _misc_declares_default_methods) != 0;
       
   657   }
       
   658   void set_declares_default_methods(bool b) {
       
   659     if (b) {
       
   660       _misc_flags |= _misc_declares_default_methods;
       
   661     } else {
       
   662       _misc_flags &= ~_misc_declares_default_methods;
       
   663     }
       
   664   }
       
   665 
   654   // for adding methods, ConstMethod::UNSET_IDNUM means no more ids available
   666   // for adding methods, ConstMethod::UNSET_IDNUM means no more ids available
   655   inline u2 next_method_idnum();
   667   inline u2 next_method_idnum();
   656   void set_initial_method_idnum(u2 value)             { _idnum_allocated_count = value; }
   668   void set_initial_method_idnum(u2 value)             { _idnum_allocated_count = value; }
   657 
   669 
   658   // generics support
   670   // generics support
  1020   // Static methods that are used to implement member methods where an exposed this pointer
  1032   // Static methods that are used to implement member methods where an exposed this pointer
  1021   // is needed due to possible GCs
  1033   // is needed due to possible GCs
  1022   static bool link_class_impl                           (instanceKlassHandle this_k, bool throw_verifyerror, TRAPS);
  1034   static bool link_class_impl                           (instanceKlassHandle this_k, bool throw_verifyerror, TRAPS);
  1023   static bool verify_code                               (instanceKlassHandle this_k, bool throw_verifyerror, TRAPS);
  1035   static bool verify_code                               (instanceKlassHandle this_k, bool throw_verifyerror, TRAPS);
  1024   static void initialize_impl                           (instanceKlassHandle this_k, TRAPS);
  1036   static void initialize_impl                           (instanceKlassHandle this_k, TRAPS);
       
  1037   static void initialize_super_interfaces               (instanceKlassHandle this_k, TRAPS);
  1025   static void eager_initialize_impl                     (instanceKlassHandle this_k);
  1038   static void eager_initialize_impl                     (instanceKlassHandle this_k);
  1026   static void set_initialization_state_and_notify_impl  (instanceKlassHandle this_k, ClassState state, TRAPS);
  1039   static void set_initialization_state_and_notify_impl  (instanceKlassHandle this_k, ClassState state, TRAPS);
  1027   static void call_class_initializer_impl               (instanceKlassHandle this_k, TRAPS);
  1040   static void call_class_initializer_impl               (instanceKlassHandle this_k, TRAPS);
  1028   static Klass* array_klass_impl                        (instanceKlassHandle this_k, bool or_null, int n, TRAPS);
  1041   static Klass* array_klass_impl                        (instanceKlassHandle this_k, bool or_null, int n, TRAPS);
  1029   static void do_local_static_fields_impl               (instanceKlassHandle this_k, void f(fieldDescriptor* fd, Handle, TRAPS), Handle, TRAPS);
  1042   static void do_local_static_fields_impl               (instanceKlassHandle this_k, void f(fieldDescriptor* fd, Handle, TRAPS), Handle, TRAPS);