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,
1059 // The SEARCH_* bits are not for MN.flags but for the matchFlags argument of MHN.getMembers:
1060 MN_SEARCH_SUPERCLASSES = 0x00100000, // walk super classes
1061 MN_SEARCH_INTERFACES = 0x00200000 // walk implemented interfaces
1062 };
1063
1064 // Accessors for code generation:
1065 static int clazz_offset_in_bytes() { return _clazz_offset; }
1066 static int type_offset_in_bytes() { return _type_offset; }
1067 static int name_offset_in_bytes() { return _name_offset; }
1068 static int flags_offset_in_bytes() { return _flags_offset; }
1069 static int vmtarget_offset_in_bytes() { return _vmtarget_offset; }
1070 static int vmindex_offset_in_bytes() { return _vmindex_offset; }
1071 };
1072
1073
1074 // Interface to java.lang.invoke.MethodType objects
1075
1076 class java_lang_invoke_MethodType: AllStatic {
|
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_CALLER_SENSITIVE = 0x00100000, // @CallerSensitive annotation detected
1058 MN_REFERENCE_KIND_SHIFT = 24, // refKind
1059 MN_REFERENCE_KIND_MASK = 0x0F000000 >> MN_REFERENCE_KIND_SHIFT,
1060 // The SEARCH_* bits are not for MN.flags but for the matchFlags argument of MHN.getMembers:
1061 MN_SEARCH_SUPERCLASSES = 0x00100000, // walk super classes
1062 MN_SEARCH_INTERFACES = 0x00200000 // walk implemented interfaces
1063 };
1064
1065 // Accessors for code generation:
1066 static int clazz_offset_in_bytes() { return _clazz_offset; }
1067 static int type_offset_in_bytes() { return _type_offset; }
1068 static int name_offset_in_bytes() { return _name_offset; }
1069 static int flags_offset_in_bytes() { return _flags_offset; }
1070 static int vmtarget_offset_in_bytes() { return _vmtarget_offset; }
1071 static int vmindex_offset_in_bytes() { return _vmindex_offset; }
1072 };
1073
1074
1075 // Interface to java.lang.invoke.MethodType objects
1076
1077 class java_lang_invoke_MethodType: AllStatic {
|