< prev index next >

src/hotspot/share/interpreter/linkResolver.hpp

Print this page
rev 58631 : imported patch link_selected_klass

*** 47,80 **** itable_call, // select recv.klass.method_at_itable(resolved_method.holder, index) unknown_kind = -1 }; private: Klass* _resolved_klass; // static receiver klass, resolved from a symbolic reference - Klass* _selected_klass; // dynamic receiver class (same as static, or subklass) methodHandle _resolved_method; // static target method methodHandle _selected_method; // dynamic (actual) target method CallKind _call_kind; // kind of call (static(=bytecode static/special + // others inferred), vtable, itable) 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_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, const methodHandle& resolved_method, const methodHandle& selected_method, int itable_index, TRAPS); ! void set_virtual(Klass* resolved_klass, Klass* selected_klass, const methodHandle& resolved_method, const methodHandle& selected_method, int vtable_index, TRAPS); void set_handle(const methodHandle& resolved_method, Handle resolved_appendix, TRAPS); void set_handle(Klass* resolved_klass, const methodHandle& resolved_method, Handle resolved_appendix, TRAPS); ! void set_common(Klass* resolved_klass, Klass* selected_klass, const methodHandle& resolved_method, const methodHandle& selected_method, CallKind kind, int index, TRAPS); --- 47,79 ---- itable_call, // select recv.klass.method_at_itable(resolved_method.holder, index) unknown_kind = -1 }; private: Klass* _resolved_klass; // static receiver klass, resolved from a symbolic reference methodHandle _resolved_method; // static target method methodHandle _selected_method; // dynamic (actual) target method CallKind _call_kind; // kind of call (static(=bytecode static/special + // others inferred), vtable, itable) 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_name; // Object holding the ResolvedMethodName void set_static(Klass* resolved_klass, const methodHandle& resolved_method, TRAPS); ! void set_interface(Klass* resolved_klass, const methodHandle& resolved_method, const methodHandle& selected_method, int itable_index, TRAPS); ! void set_virtual(Klass* resolved_klass, const methodHandle& resolved_method, const methodHandle& selected_method, int vtable_index, TRAPS); void set_handle(const methodHandle& resolved_method, Handle resolved_appendix, TRAPS); void set_handle(Klass* resolved_klass, const methodHandle& resolved_method, Handle resolved_appendix, TRAPS); ! void set_common(Klass* resolved_klass, const methodHandle& resolved_method, const methodHandle& selected_method, CallKind kind, int index, TRAPS);
*** 93,113 **** // 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; } Method* resolved_method() const { return _resolved_method(); } Method* selected_method() const { return _selected_method(); } Handle resolved_appendix() const { return _resolved_appendix; } 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; } - int call_index() const { return _call_index; } int vtable_index() const { // Even for interface calls the vtable index could be non-negative. // See CallInfo::set_interface. assert(has_vtable_index() || is_statically_bound(), ""); assert(call_kind() == vtable_call || call_kind() == direct_call, ""); --- 92,110 ----
< prev index next >