959 // Accessors 960 static oop type(oop mh); 961 static void set_type(oop mh, oop mtype); 962 963 static oop form(oop mh); 964 static void set_form(oop mh, oop lform); 965 966 // Testers 967 static bool is_subclass(Klass* klass) { 968 return klass->is_subclass_of(SystemDictionary::MethodHandle_klass()); 969 } 970 static bool is_instance(oop obj) { 971 return obj != NULL && is_subclass(obj->klass()); 972 } 973 974 // Accessors for code generation: 975 static int type_offset_in_bytes() { return _type_offset; } 976 static int form_offset_in_bytes() { return _form_offset; } 977 }; 978 979 // Interface to java.lang.invoke.LambdaForm objects 980 // (These are a private interface for managing adapter code generation.) 981 982 class java_lang_invoke_LambdaForm: AllStatic { 983 friend class JavaClasses; 984 985 private: 986 static int _vmentry_offset; // type is MemberName 987 988 static void compute_offsets(); 989 990 public: 991 // Accessors 992 static oop vmentry(oop lform); 993 static void set_vmentry(oop lform, oop invoker); 994 995 // Testers 996 static bool is_subclass(Klass* klass) { 997 return SystemDictionary::LambdaForm_klass() != NULL && 998 klass->is_subclass_of(SystemDictionary::LambdaForm_klass()); | 959 // Accessors 960 static oop type(oop mh); 961 static void set_type(oop mh, oop mtype); 962 963 static oop form(oop mh); 964 static void set_form(oop mh, oop lform); 965 966 // Testers 967 static bool is_subclass(Klass* klass) { 968 return klass->is_subclass_of(SystemDictionary::MethodHandle_klass()); 969 } 970 static bool is_instance(oop obj) { 971 return obj != NULL && is_subclass(obj->klass()); 972 } 973 974 // Accessors for code generation: 975 static int type_offset_in_bytes() { return _type_offset; } 976 static int form_offset_in_bytes() { return _form_offset; } 977 }; 978 979 // Interface to java.lang.invoke.DirectMethodHandle objects 980 981 class java_lang_invoke_DirectMethodHandle: AllStatic { 982 friend class JavaClasses; 983 984 private: 985 static int _member_offset; // the MemberName of this DMH 986 987 static void compute_offsets(); 988 989 public: 990 // Accessors 991 static oop member(oop mh); 992 993 // Testers 994 static bool is_subclass(Klass* klass) { 995 return klass->is_subclass_of(SystemDictionary::DirectMethodHandle_klass()); 996 } 997 static bool is_instance(oop obj) { 998 return obj != NULL && is_subclass(obj->klass()); 999 } 1000 1001 // Accessors for code generation: 1002 static int member_offset_in_bytes() { return _member_offset; } 1003 }; 1004 1005 // Interface to java.lang.invoke.LambdaForm objects 1006 // (These are a private interface for managing adapter code generation.) 1007 1008 class java_lang_invoke_LambdaForm: AllStatic { 1009 friend class JavaClasses; 1010 1011 private: 1012 static int _vmentry_offset; // type is MemberName 1013 1014 static void compute_offsets(); 1015 1016 public: 1017 // Accessors 1018 static oop vmentry(oop lform); 1019 static void set_vmentry(oop lform, oop invoker); 1020 1021 // Testers 1022 static bool is_subclass(Klass* klass) { 1023 return SystemDictionary::LambdaForm_klass() != NULL && 1024 klass->is_subclass_of(SystemDictionary::LambdaForm_klass()); |