--- a/hotspot/src/share/vm/interpreter/linkResolver.hpp Fri May 26 13:47:33 2017 -0700
+++ b/hotspot/src/share/vm/interpreter/linkResolver.hpp Sat May 27 09:21:01 2017 -0400
@@ -56,6 +56,7 @@
int _call_index; // vtable or itable index of selected class method (if any)
Handle _resolved_appendix; // extra argument in constant pool (if CPCE::has_appendix)
Handle _resolved_method_type; // MethodType (for invokedynamic and invokehandle call sites)
+ Handle _resolved_method_name; // Object holding the ResolvedMethodName
void set_static(Klass* resolved_klass, const methodHandle& resolved_method, TRAPS);
void set_interface(Klass* resolved_klass, Klass* selected_klass,
@@ -88,8 +89,9 @@
}
// utility to extract an effective CallInfo from a method and an optional receiver limit
- // does not queue the method for compilation
- CallInfo(Method* resolved_method, Klass* resolved_klass = NULL);
+ // does not queue the method for compilation. This also creates a ResolvedMethodName
+ // object for the resolved_method.
+ CallInfo(Method* resolved_method, Klass* resolved_klass, TRAPS);
Klass* resolved_klass() const { return _resolved_klass; }
Klass* selected_klass() const { return _selected_klass; }
@@ -97,6 +99,9 @@
methodHandle selected_method() const { return _selected_method; }
Handle resolved_appendix() const { return _resolved_appendix; }
Handle resolved_method_type() const { return _resolved_method_type; }
+ Handle resolved_method_name() const { return _resolved_method_name; }
+ // Materialize a java.lang.invoke.ResolvedMethodName for this resolved_method
+ void set_resolved_method_name(TRAPS);
BasicType result_type() const { return selected_method()->result_type(); }
CallKind call_kind() const { return _call_kind; }