1075 static int _vmindex_offset; 1076 1077 static void compute_offsets(); 1078 1079 public: 1080 // Accessors 1081 static oop clazz(oop mname); 1082 static void set_clazz(oop mname, oop clazz); 1083 1084 static oop type(oop mname); 1085 static void set_type(oop mname, oop type); 1086 1087 static oop name(oop mname); 1088 static void set_name(oop mname, oop name); 1089 1090 static int flags(oop mname); 1091 static void set_flags(oop mname, int flags); 1092 1093 static Metadata* vmtarget(oop mname); 1094 static void set_vmtarget(oop mname, Metadata* target); 1095 #if INCLUDE_JVMTI 1096 static void adjust_vmtarget(oop mname, Method* old_method, Method* new_method, 1097 bool* trace_name_printed); 1098 #endif // INCLUDE_JVMTI 1099 1100 static intptr_t vmindex(oop mname); 1101 static void set_vmindex(oop mname, intptr_t index); 1102 1103 // Testers 1104 static bool is_subclass(Klass* klass) { 1105 return klass->is_subclass_of(SystemDictionary::MemberName_klass()); 1106 } 1107 static bool is_instance(oop obj); 1108 1109 static bool is_method(oop obj); 1110 1111 // Relevant integer codes (keep these in synch. with MethodHandleNatives.Constants): 1112 enum { 1113 MN_IS_METHOD = 0x00010000, // method (not constructor) 1114 MN_IS_CONSTRUCTOR = 0x00020000, // constructor 1115 MN_IS_FIELD = 0x00040000, // field 1116 MN_IS_TYPE = 0x00080000, // nested type 1117 MN_CALLER_SENSITIVE = 0x00100000, // @CallerSensitive annotation detected 1118 MN_REFERENCE_KIND_SHIFT = 24, // refKind | 1075 static int _vmindex_offset; 1076 1077 static void compute_offsets(); 1078 1079 public: 1080 // Accessors 1081 static oop clazz(oop mname); 1082 static void set_clazz(oop mname, oop clazz); 1083 1084 static oop type(oop mname); 1085 static void set_type(oop mname, oop type); 1086 1087 static oop name(oop mname); 1088 static void set_name(oop mname, oop name); 1089 1090 static int flags(oop mname); 1091 static void set_flags(oop mname, int flags); 1092 1093 static Metadata* vmtarget(oop mname); 1094 static void set_vmtarget(oop mname, Metadata* target); 1095 1096 static intptr_t vmindex(oop mname); 1097 static void set_vmindex(oop mname, intptr_t index); 1098 1099 // Testers 1100 static bool is_subclass(Klass* klass) { 1101 return klass->is_subclass_of(SystemDictionary::MemberName_klass()); 1102 } 1103 static bool is_instance(oop obj); 1104 1105 static bool is_method(oop obj); 1106 1107 // Relevant integer codes (keep these in synch. with MethodHandleNatives.Constants): 1108 enum { 1109 MN_IS_METHOD = 0x00010000, // method (not constructor) 1110 MN_IS_CONSTRUCTOR = 0x00020000, // constructor 1111 MN_IS_FIELD = 0x00040000, // field 1112 MN_IS_TYPE = 0x00080000, // nested type 1113 MN_CALLER_SENSITIVE = 0x00100000, // @CallerSensitive annotation detected 1114 MN_REFERENCE_KIND_SHIFT = 24, // refKind |