src/share/vm/interpreter/linkResolver.hpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/interpreter/linkResolver.hpp Thu Jun 2 12:26:07 2016
--- new/src/share/vm/interpreter/linkResolver.hpp Thu Jun 2 12:26:07 2016
*** 129,158 ****
--- 129,164 ----
// Condensed information from constant pool to use to resolve the method or field.
// resolved_klass = specified class (i.e., static receiver class)
// current_klass = sending method holder (i.e., class containing the method
// containing the call being resolved)
+ // current_method = sending method (relevant for field resolution)
class LinkInfo : public StackObj {
Symbol* _name; // extracted from JVM_CONSTANT_NameAndType
Symbol* _signature;
KlassHandle _resolved_klass; // class that the constant pool entry points to
KlassHandle _current_klass; // class that owns the constant pool
+ methodHandle _current_method; // sending method
bool _check_access;
public:
! LinkInfo(const constantPoolHandle& pool, int index, methodHandle current_method, TRAPS);
// Condensed information from other call sites within the vm.
- LinkInfo(KlassHandle resolved_klass, Symbol* name, Symbol* signature,
KlassHandle current_klass, bool check_access = true) :
+ Symbol* name, Symbol* signature, // field or method signature
+ KlassHandle current_klass, methodHandle current_method,
+ bool check_access = true) :
_resolved_klass(resolved_klass),
- _name(name), _signature(signature), _current_klass(current_klass),
+ _current_klass(current_klass), _current_method(current_method),
_check_access(check_access) {}
// accessors
Symbol* name() const { return _name; }
Symbol* signature() const { return _signature; }
KlassHandle resolved_klass() const { return _resolved_klass; }
KlassHandle current_klass() const { return _current_klass; }
+ methodHandle current_method() const { return _current_method; }
bool check_access() const { return _check_access; }
char* method_string() const;
void print() PRODUCT_RETURN;
};
*** 249,259 ****
--- 255,267 ----
const constantPoolHandle& pool,
int index, TRAPS);
static void resolve_field_access(fieldDescriptor& result,
const constantPoolHandle& pool,
- int index, Bytecodes::Code byte, TRAPS);
+ const methodHandle& method,
+ Bytecodes::Code byte, TRAPS);
static void resolve_field(fieldDescriptor& result, const LinkInfo& link_info,
Bytecodes::Code access_kind,
bool initialize_class, TRAPS);
static void resolve_static_call (CallInfo& result,
src/share/vm/interpreter/linkResolver.hpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File