44 // JVM support for MethodHandle, MethodType, and related types
45 // in java.lang.invoke and sun.invoke.
46 // See also javaClasses for layouts java_lang_invoke_Method{Handle,Type,Type::Form}.
47 public:
48 public:
49 static bool enabled() { return _enabled; }
50 static void set_enabled(bool z);
51
52 private:
53 static bool _enabled;
54
55 // Adapters.
56 static MethodHandlesAdapterBlob* _adapter_code;
57
58 // utility functions for reifying names and types
59 static oop field_name_or_null(Symbol* s);
60 static oop field_signature_type_or_null(Symbol* s);
61
62 public:
63 // working with member names
64 static Handle resolve_MemberName(Handle mname, Klass* caller, TRAPS); // compute vmtarget/vmindex from name/type
65 static void expand_MemberName(Handle mname, int suppress, TRAPS); // expand defc/name/type if missing
66 static oop init_MemberName(Handle mname_h, Handle target_h, TRAPS); // compute vmtarget/vmindex from target
67 static oop init_field_MemberName(Handle mname_h, fieldDescriptor& fd, bool is_setter = false);
68 static oop init_method_MemberName(Handle mname_h, CallInfo& info);
69 static int method_ref_kind(Method* m, bool do_dispatch_if_possible = true);
70 static int find_MemberNames(Klass* k, Symbol* name, Symbol* sig,
71 int mflags, Klass* caller,
72 int skip, objArrayHandle results, TRAPS);
73 static Handle resolve_MemberName_type(Handle mname, Klass* caller, TRAPS);
74
75 // bit values for suppress argument to expand_MemberName:
76 enum { _suppress_defc = 1, _suppress_name = 2, _suppress_type = 4 };
77
78 // CallSite support
79 static void add_dependent_nmethod(oop call_site, nmethod* nm);
80 static void remove_dependent_nmethod(oop call_site, nmethod* nm);
81
82 static void flush_dependent_nmethods(Handle call_site, Handle target);
83
84 // Generate MethodHandles adapters.
|
44 // JVM support for MethodHandle, MethodType, and related types
45 // in java.lang.invoke and sun.invoke.
46 // See also javaClasses for layouts java_lang_invoke_Method{Handle,Type,Type::Form}.
47 public:
48 public:
49 static bool enabled() { return _enabled; }
50 static void set_enabled(bool z);
51
52 private:
53 static bool _enabled;
54
55 // Adapters.
56 static MethodHandlesAdapterBlob* _adapter_code;
57
58 // utility functions for reifying names and types
59 static oop field_name_or_null(Symbol* s);
60 static oop field_signature_type_or_null(Symbol* s);
61
62 public:
63 // working with member names
64 static Handle resolve_MemberName(Handle mname, Klass* caller,
65 bool speculative_resolve, TRAPS); // compute vmtarget/vmindex from name/type
66 static void expand_MemberName(Handle mname, int suppress, TRAPS); // expand defc/name/type if missing
67 static oop init_MemberName(Handle mname_h, Handle target_h, TRAPS); // compute vmtarget/vmindex from target
68 static oop init_field_MemberName(Handle mname_h, fieldDescriptor& fd, bool is_setter = false);
69 static oop init_method_MemberName(Handle mname_h, CallInfo& info);
70 static int method_ref_kind(Method* m, bool do_dispatch_if_possible = true);
71 static int find_MemberNames(Klass* k, Symbol* name, Symbol* sig,
72 int mflags, Klass* caller,
73 int skip, objArrayHandle results, TRAPS);
74 static Handle resolve_MemberName_type(Handle mname, Klass* caller, TRAPS);
75
76 // bit values for suppress argument to expand_MemberName:
77 enum { _suppress_defc = 1, _suppress_name = 2, _suppress_type = 4 };
78
79 // CallSite support
80 static void add_dependent_nmethod(oop call_site, nmethod* nm);
81 static void remove_dependent_nmethod(oop call_site, nmethod* nm);
82
83 static void flush_dependent_nmethods(Handle call_site, Handle target);
84
85 // Generate MethodHandles adapters.
|