< prev index next >
src/hotspot/share/interpreter/linkResolver.hpp
Print this page
rev 58631 : imported patch link_selected_klass
@@ -47,34 +47,33 @@
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,
+ void set_interface(Klass* resolved_klass,
const methodHandle& resolved_method,
const methodHandle& selected_method,
int itable_index, TRAPS);
- void set_virtual(Klass* resolved_klass, Klass* selected_klass,
+ 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, Klass* selected_klass,
+ void set_common(Klass* resolved_klass,
const methodHandle& resolved_method,
const methodHandle& selected_method,
CallKind kind,
int index, TRAPS);
@@ -93,21 +92,19 @@
// 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, "");
< prev index next >