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; }
|