src/share/vm/classfile/javaClasses.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8042235_8u40 Sdiff src/share/vm/classfile

src/share/vm/classfile/javaClasses.hpp

Print this page
rev 6917 : 8042235: redefining method used by multiple MethodHandles crashes VM
Summary: note all MemberNames created on internal list for adjusting method entries.
Reviewed-by: sspitsyn, dcubed, lfoltan


1079 
1080   static void compute_offsets();
1081 
1082  public:
1083   // Accessors
1084   static oop            clazz(oop mname);
1085   static void       set_clazz(oop mname, oop clazz);
1086 
1087   static oop            type(oop mname);
1088   static void       set_type(oop mname, oop type);
1089 
1090   static oop            name(oop mname);
1091   static void       set_name(oop mname, oop name);
1092 
1093   static int            flags(oop mname);
1094   static void       set_flags(oop mname, int flags);
1095 
1096   static Metadata*      vmtarget(oop mname);
1097   static void       set_vmtarget(oop mname, Metadata* target);
1098 #if INCLUDE_JVMTI
1099   static void       adjust_vmtarget(oop mname, Metadata* target);

1100 #endif // INCLUDE_JVMTI
1101 
1102   static intptr_t       vmindex(oop mname);
1103   static void       set_vmindex(oop mname, intptr_t index);
1104 
1105   // Testers
1106   static bool is_subclass(Klass* klass) {
1107     return klass->is_subclass_of(SystemDictionary::MemberName_klass());
1108   }
1109   static bool is_instance(oop obj) {
1110     return obj != NULL && is_subclass(obj->klass());
1111   }


1112 
1113   // Relevant integer codes (keep these in synch. with MethodHandleNatives.Constants):
1114   enum {
1115     MN_IS_METHOD            = 0x00010000, // method (not constructor)
1116     MN_IS_CONSTRUCTOR       = 0x00020000, // constructor
1117     MN_IS_FIELD             = 0x00040000, // field
1118     MN_IS_TYPE              = 0x00080000, // nested type
1119     MN_CALLER_SENSITIVE     = 0x00100000, // @CallerSensitive annotation detected
1120     MN_REFERENCE_KIND_SHIFT = 24, // refKind
1121     MN_REFERENCE_KIND_MASK  = 0x0F000000 >> MN_REFERENCE_KIND_SHIFT,
1122     // The SEARCH_* bits are not for MN.flags but for the matchFlags argument of MHN.getMembers:
1123     MN_SEARCH_SUPERCLASSES  = 0x00100000, // walk super classes
1124     MN_SEARCH_INTERFACES    = 0x00200000  // walk implemented interfaces
1125   };
1126 
1127   // Accessors for code generation:
1128   static int clazz_offset_in_bytes()            { return _clazz_offset; }
1129   static int type_offset_in_bytes()             { return _type_offset; }
1130   static int name_offset_in_bytes()             { return _name_offset; }
1131   static int flags_offset_in_bytes()            { return _flags_offset; }




1079 
1080   static void compute_offsets();
1081 
1082  public:
1083   // Accessors
1084   static oop            clazz(oop mname);
1085   static void       set_clazz(oop mname, oop clazz);
1086 
1087   static oop            type(oop mname);
1088   static void       set_type(oop mname, oop type);
1089 
1090   static oop            name(oop mname);
1091   static void       set_name(oop mname, oop name);
1092 
1093   static int            flags(oop mname);
1094   static void       set_flags(oop mname, int flags);
1095 
1096   static Metadata*      vmtarget(oop mname);
1097   static void       set_vmtarget(oop mname, Metadata* target);
1098 #if INCLUDE_JVMTI
1099   static void       adjust_vmtarget(oop mname, Method* old_method, Method* new_method,
1100                                     bool* trace_name_printed);
1101 #endif // INCLUDE_JVMTI
1102 
1103   static intptr_t       vmindex(oop mname);
1104   static void       set_vmindex(oop mname, intptr_t index);
1105 
1106   // Testers
1107   static bool is_subclass(Klass* klass) {
1108     return klass->is_subclass_of(SystemDictionary::MemberName_klass());
1109   }
1110   static bool is_instance(oop obj) {
1111     return obj != NULL && is_subclass(obj->klass());
1112   }
1113 
1114   static bool is_method(oop obj);
1115 
1116   // Relevant integer codes (keep these in synch. with MethodHandleNatives.Constants):
1117   enum {
1118     MN_IS_METHOD            = 0x00010000, // method (not constructor)
1119     MN_IS_CONSTRUCTOR       = 0x00020000, // constructor
1120     MN_IS_FIELD             = 0x00040000, // field
1121     MN_IS_TYPE              = 0x00080000, // nested type
1122     MN_CALLER_SENSITIVE     = 0x00100000, // @CallerSensitive annotation detected
1123     MN_REFERENCE_KIND_SHIFT = 24, // refKind
1124     MN_REFERENCE_KIND_MASK  = 0x0F000000 >> MN_REFERENCE_KIND_SHIFT,
1125     // The SEARCH_* bits are not for MN.flags but for the matchFlags argument of MHN.getMembers:
1126     MN_SEARCH_SUPERCLASSES  = 0x00100000, // walk super classes
1127     MN_SEARCH_INTERFACES    = 0x00200000  // walk implemented interfaces
1128   };
1129 
1130   // Accessors for code generation:
1131   static int clazz_offset_in_bytes()            { return _clazz_offset; }
1132   static int type_offset_in_bytes()             { return _type_offset; }
1133   static int name_offset_in_bytes()             { return _name_offset; }
1134   static int flags_offset_in_bytes()            { return _flags_offset; }


src/share/vm/classfile/javaClasses.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File