54 CallKind _call_kind; // kind of call (static(=bytecode static/special + |
54 CallKind _call_kind; // kind of call (static(=bytecode static/special + |
55 // others inferred), vtable, itable) |
55 // others inferred), vtable, itable) |
56 int _call_index; // vtable or itable index of selected class method (if any) |
56 int _call_index; // vtable or itable index of selected class method (if any) |
57 Handle _resolved_appendix; // extra argument in constant pool (if CPCE::has_appendix) |
57 Handle _resolved_appendix; // extra argument in constant pool (if CPCE::has_appendix) |
58 Handle _resolved_method_type; // MethodType (for invokedynamic and invokehandle call sites) |
58 Handle _resolved_method_type; // MethodType (for invokedynamic and invokehandle call sites) |
|
59 Handle _resolved_method_name; // Object holding the ResolvedMethodName |
59 |
60 |
60 void set_static(Klass* resolved_klass, const methodHandle& resolved_method, TRAPS); |
61 void set_static(Klass* resolved_klass, const methodHandle& resolved_method, TRAPS); |
61 void set_interface(Klass* resolved_klass, Klass* selected_klass, |
62 void set_interface(Klass* resolved_klass, Klass* selected_klass, |
62 const methodHandle& resolved_method, |
63 const methodHandle& resolved_method, |
63 const methodHandle& selected_method, |
64 const methodHandle& selected_method, |
86 _call_index = Method::garbage_vtable_index; |
87 _call_index = Method::garbage_vtable_index; |
87 #endif //PRODUCT |
88 #endif //PRODUCT |
88 } |
89 } |
89 |
90 |
90 // utility to extract an effective CallInfo from a method and an optional receiver limit |
91 // utility to extract an effective CallInfo from a method and an optional receiver limit |
91 // does not queue the method for compilation |
92 // does not queue the method for compilation. This also creates a ResolvedMethodName |
92 CallInfo(Method* resolved_method, Klass* resolved_klass = NULL); |
93 // object for the resolved_method. |
|
94 CallInfo(Method* resolved_method, Klass* resolved_klass, TRAPS); |
93 |
95 |
94 Klass* resolved_klass() const { return _resolved_klass; } |
96 Klass* resolved_klass() const { return _resolved_klass; } |
95 Klass* selected_klass() const { return _selected_klass; } |
97 Klass* selected_klass() const { return _selected_klass; } |
96 methodHandle resolved_method() const { return _resolved_method; } |
98 methodHandle resolved_method() const { return _resolved_method; } |
97 methodHandle selected_method() const { return _selected_method; } |
99 methodHandle selected_method() const { return _selected_method; } |
98 Handle resolved_appendix() const { return _resolved_appendix; } |
100 Handle resolved_appendix() const { return _resolved_appendix; } |
99 Handle resolved_method_type() const { return _resolved_method_type; } |
101 Handle resolved_method_type() const { return _resolved_method_type; } |
|
102 Handle resolved_method_name() const { return _resolved_method_name; } |
|
103 // Materialize a java.lang.invoke.ResolvedMethodName for this resolved_method |
|
104 void set_resolved_method_name(TRAPS); |
100 |
105 |
101 BasicType result_type() const { return selected_method()->result_type(); } |
106 BasicType result_type() const { return selected_method()->result_type(); } |
102 CallKind call_kind() const { return _call_kind; } |
107 CallKind call_kind() const { return _call_kind; } |
103 int call_index() const { return _call_index; } |
108 int call_index() const { return _call_index; } |
104 int vtable_index() const { |
109 int vtable_index() const { |