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