61 public:
62 // working with member names
63 static Handle resolve_MemberName(Handle mname, Klass* caller,
64 bool speculative_resolve, 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.
85 static void generate_adapters();
86
87 // Called from MethodHandlesAdapterGenerator.
88 static address generate_method_handle_interpreter_entry(MacroAssembler* _masm, vmIntrinsics::ID iid);
89 static void generate_method_handle_dispatch(MacroAssembler* _masm,
90 vmIntrinsics::ID iid,
91 Register receiver_reg,
92 Register member_reg,
93 bool for_compiler_entry);
94
95 // Queries
96 static bool is_signature_polymorphic(vmIntrinsics::ID iid) {
97 return (iid >= vmIntrinsics::FIRST_MH_SIG_POLY &&
98 iid <= vmIntrinsics::LAST_MH_SIG_POLY);
99 }
|
61 public:
62 // working with member names
63 static Handle resolve_MemberName(Handle mname, Klass* caller,
64 bool speculative_resolve, 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 static void clean_dependency_context(oop call_site);
82
83 static void flush_dependent_nmethods(Handle call_site, Handle target);
84
85 // Generate MethodHandles adapters.
86 static void generate_adapters();
87
88 // Called from MethodHandlesAdapterGenerator.
89 static address generate_method_handle_interpreter_entry(MacroAssembler* _masm, vmIntrinsics::ID iid);
90 static void generate_method_handle_dispatch(MacroAssembler* _masm,
91 vmIntrinsics::ID iid,
92 Register receiver_reg,
93 Register member_reg,
94 bool for_compiler_entry);
95
96 // Queries
97 static bool is_signature_polymorphic(vmIntrinsics::ID iid) {
98 return (iid >= vmIntrinsics::FIRST_MH_SIG_POLY &&
99 iid <= vmIntrinsics::LAST_MH_SIG_POLY);
100 }
|