1019 static int _vmindex_offset; 1020 1021 static void compute_offsets(); 1022 1023 public: 1024 // Accessors 1025 static oop clazz(oop mname); 1026 static void set_clazz(oop mname, oop clazz); 1027 1028 static oop type(oop mname); 1029 static void set_type(oop mname, oop type); 1030 1031 static oop name(oop mname); 1032 static void set_name(oop mname, oop name); 1033 1034 static int flags(oop mname); 1035 static void set_flags(oop mname, int flags); 1036 1037 static Metadata* vmtarget(oop mname); 1038 static void set_vmtarget(oop mname, Metadata* target); 1039 1040 static intptr_t vmindex(oop mname); 1041 static void set_vmindex(oop mname, intptr_t index); 1042 1043 // Testers 1044 static bool is_subclass(Klass* klass) { 1045 return klass->is_subclass_of(SystemDictionary::MemberName_klass()); 1046 } 1047 static bool is_instance(oop obj) { 1048 return obj != NULL && is_subclass(obj->klass()); 1049 } 1050 1051 // Relevant integer codes (keep these in synch. with MethodHandleNatives.Constants): 1052 enum { 1053 MN_IS_METHOD = 0x00010000, // method (not constructor) 1054 MN_IS_CONSTRUCTOR = 0x00020000, // constructor 1055 MN_IS_FIELD = 0x00040000, // field 1056 MN_IS_TYPE = 0x00080000, // nested type 1057 MN_REFERENCE_KIND_SHIFT = 24, // refKind 1058 MN_REFERENCE_KIND_MASK = 0x0F000000 >> MN_REFERENCE_KIND_SHIFT, | 1019 static int _vmindex_offset; 1020 1021 static void compute_offsets(); 1022 1023 public: 1024 // Accessors 1025 static oop clazz(oop mname); 1026 static void set_clazz(oop mname, oop clazz); 1027 1028 static oop type(oop mname); 1029 static void set_type(oop mname, oop type); 1030 1031 static oop name(oop mname); 1032 static void set_name(oop mname, oop name); 1033 1034 static int flags(oop mname); 1035 static void set_flags(oop mname, int flags); 1036 1037 static Metadata* vmtarget(oop mname); 1038 static void set_vmtarget(oop mname, Metadata* target); 1039 #if INCLUDE_JVMTI 1040 static void adjust_vmtarget(oop mname, Metadata* target); 1041 #endif // INCLUDE_JVMTI 1042 1043 static intptr_t vmindex(oop mname); 1044 static void set_vmindex(oop mname, intptr_t index); 1045 1046 // Testers 1047 static bool is_subclass(Klass* klass) { 1048 return klass->is_subclass_of(SystemDictionary::MemberName_klass()); 1049 } 1050 static bool is_instance(oop obj) { 1051 return obj != NULL && is_subclass(obj->klass()); 1052 } 1053 1054 // Relevant integer codes (keep these in synch. with MethodHandleNatives.Constants): 1055 enum { 1056 MN_IS_METHOD = 0x00010000, // method (not constructor) 1057 MN_IS_CONSTRUCTOR = 0x00020000, // constructor 1058 MN_IS_FIELD = 0x00040000, // field 1059 MN_IS_TYPE = 0x00080000, // nested type 1060 MN_REFERENCE_KIND_SHIFT = 24, // refKind 1061 MN_REFERENCE_KIND_MASK = 0x0F000000 >> MN_REFERENCE_KIND_SHIFT, |