src/share/vm/oops/instanceKlass.hpp

Print this page

        

*** 186,196 **** // This is only non-null for an anonymous class (JSR 292 enabled). // The host class is either named, or a previously loaded anonymous class. klassOop _host_klass; // Class signers. objArrayOop _signers; ! // inner_classes attribute. typeArrayOop _inner_classes; // Implementors of this interface (not valid if it overflows) klassOop _implementors[implementors_limit]; // Annotations for this class, or null if none. typeArrayOop _class_annotations; --- 186,206 ---- // This is only non-null for an anonymous class (JSR 292 enabled). // The host class is either named, or a previously loaded anonymous class. klassOop _host_klass; // Class signers. objArrayOop _signers; ! // The InnerClasses attribute and EnclosingMethod attribute. The ! // _inner_classes is an array of shorts. If the class has InnerClasses ! // attribute, then the _inner_classes array begins with 4-tuples of shorts ! // [inner_class_info_index, outer_class_info_index, ! // inner_name_index, inner_class_access_flags] for the InnerClasses ! // attribute. If the EnclosingMethod attribute exists, it occupies the ! // last two shorts [class_index, method_index] of the array. If only ! // the InnerClasses attribute exists, the _inner_classes array length is ! // number_of_inner_classes * 4. If the class has both InnerClasses ! // and EnclosingMethod attributes the _inner_classes array length is ! // number_of_inner_classes * 4 + enclosing_method_attribute_size. typeArrayOop _inner_classes; // Implementors of this interface (not valid if it overflows) klassOop _implementors[implementors_limit]; // Annotations for this class, or null if none. typeArrayOop _class_annotations;
*** 249,260 **** BreakpointInfo* _breakpoints; // bpt lists, managed by methodOop int _nof_implementors; // No of implementors of this interface (zero if not an interface) // Array of interesting part(s) of the previous version(s) of this // instanceKlass. See PreviousVersionWalker below. GrowableArray<PreviousVersionNode *>* _previous_versions; - u2 _enclosing_method_class_index; // Constant pool index for class of enclosing method, or 0 if none - u2 _enclosing_method_method_index; // Constant pool index for name and type of enclosing method, or 0 if none // JVMTI fields can be moved to their own structure - see 6315920 unsigned char * _cached_class_file_bytes; // JVMTI: cached class file, before retransformable agent modified it in CFLH jint _cached_class_file_len; // JVMTI: length of above JvmtiCachedClassFieldMap* _jvmti_cached_class_field_map; // JVMTI: used during heap iteration volatile u2 _idnum_allocated_count; // JNI/JVMTI: increments with the addition of methods, old ids don't change --- 259,268 ----
*** 349,358 **** --- 357,372 ---- inner_class_inner_name_offset = 2, inner_class_access_flags_offset = 3, inner_class_next_offset = 4 }; + enum EnclosingMethodAttributeOffset { + enclosing_method_class_index_offset = 0, + enclosing_method_method_index_offset = 1, + enclosing_method_attribute_size = 2 + }; + // method override check bool is_override(methodHandle super_method, Handle targetclassloader, Symbol* targetclassname, TRAPS); // package bool is_same_class_package(klassOop class2);
*** 531,545 **** // generics support Symbol* generic_signature() const { return _generic_signature; } void set_generic_signature(Symbol* sig) { _generic_signature = sig; } ! u2 enclosing_method_class_index() const { return _enclosing_method_class_index; } ! u2 enclosing_method_method_index() const { return _enclosing_method_method_index; } void set_enclosing_method_indices(u2 class_index, ! u2 method_index) { _enclosing_method_class_index = class_index; ! _enclosing_method_method_index = method_index; } // jmethodID support static jmethodID get_jmethod_id(instanceKlassHandle ik_h, methodHandle method_h); static jmethodID get_jmethod_id_fetch_or_update(instanceKlassHandle ik_h, --- 545,563 ---- // generics support Symbol* generic_signature() const { return _generic_signature; } void set_generic_signature(Symbol* sig) { _generic_signature = sig; } ! u2 enclosing_method_data(int offset); ! u2 enclosing_method_class_index() { ! return enclosing_method_data(enclosing_method_class_index_offset); ! } ! u2 enclosing_method_method_index() { ! return enclosing_method_data(enclosing_method_method_index_offset); ! } void set_enclosing_method_indices(u2 class_index, ! u2 method_index); // jmethodID support static jmethodID get_jmethod_id(instanceKlassHandle ik_h, methodHandle method_h); static jmethodID get_jmethod_id_fetch_or_update(instanceKlassHandle ik_h,