src/share/vm/interpreter/linkResolver.hpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
8073191-work Cdiff src/share/vm/interpreter/linkResolver.hpp
src/share/vm/interpreter/linkResolver.hpp
Print this page
*** 129,158 ****
// 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)
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
bool _check_access;
public:
! LinkInfo(const constantPoolHandle& pool, int index, 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) :
_resolved_klass(resolved_klass),
! _name(name), _signature(signature), _current_klass(current_klass),
_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; }
bool check_access() const { return _check_access; }
char* method_string() const;
void print() PRODUCT_RETURN;
};
--- 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, // 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_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 ****
const constantPoolHandle& pool,
int index, TRAPS);
static void resolve_field_access(fieldDescriptor& result,
const constantPoolHandle& pool,
! int index, 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,
--- 255,267 ----
const constantPoolHandle& pool,
int index, TRAPS);
static void resolve_field_access(fieldDescriptor& result,
const constantPoolHandle& pool,
! int index,
! 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