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); |