src/hotspot/share/interpreter/linkResolver.hpp
changeset 53746 bdccafc038a2
parent 53244 9807daeb47c4
child 54432 532e88de77eb
equal deleted inserted replaced
53745:a535ba736cab 53746:bdccafc038a2
    53   methodHandle _selected_method;        // dynamic (actual) target method
    53   methodHandle _selected_method;        // dynamic (actual) target method
    54   CallKind     _call_kind;              // kind of call (static(=bytecode static/special +
    54   CallKind     _call_kind;              // kind of call (static(=bytecode static/special +
    55                                         //               others inferred), vtable, itable)
    55                                         //               others inferred), vtable, itable)
    56   int          _call_index;             // vtable or itable index of selected class method (if any)
    56   int          _call_index;             // vtable or itable index of selected class method (if any)
    57   Handle       _resolved_appendix;      // extra argument in constant pool (if CPCE::has_appendix)
    57   Handle       _resolved_appendix;      // extra argument in constant pool (if CPCE::has_appendix)
    58   Handle       _resolved_method_type;   // MethodType (for invokedynamic and invokehandle call sites)
       
    59   Handle       _resolved_method_name;   // Object holding the ResolvedMethodName
    58   Handle       _resolved_method_name;   // Object holding the ResolvedMethodName
    60 
    59 
    61   void set_static(Klass* resolved_klass, const methodHandle& resolved_method, TRAPS);
    60   void set_static(Klass* resolved_klass, const methodHandle& resolved_method, TRAPS);
    62   void set_interface(Klass* resolved_klass, Klass* selected_klass,
    61   void set_interface(Klass* resolved_klass, Klass* selected_klass,
    63                      const methodHandle& resolved_method,
    62                      const methodHandle& resolved_method,
    66   void set_virtual(Klass* resolved_klass, Klass* selected_klass,
    65   void set_virtual(Klass* resolved_klass, Klass* selected_klass,
    67                    const methodHandle& resolved_method,
    66                    const methodHandle& resolved_method,
    68                    const methodHandle& selected_method,
    67                    const methodHandle& selected_method,
    69                    int vtable_index, TRAPS);
    68                    int vtable_index, TRAPS);
    70   void set_handle(const methodHandle& resolved_method,
    69   void set_handle(const methodHandle& resolved_method,
    71                   Handle resolved_appendix, Handle resolved_method_type, TRAPS);
    70                   Handle resolved_appendix, TRAPS);
    72   void set_handle(Klass* resolved_klass,
    71   void set_handle(Klass* resolved_klass,
    73                   const methodHandle& resolved_method,
    72                   const methodHandle& resolved_method,
    74                   Handle resolved_appendix, Handle resolved_method_type, TRAPS);
    73                   Handle resolved_appendix, TRAPS);
    75   void set_common(Klass* resolved_klass, Klass* selected_klass,
    74   void set_common(Klass* resolved_klass, Klass* selected_klass,
    76                   const methodHandle& resolved_method,
    75                   const methodHandle& resolved_method,
    77                   const methodHandle& selected_method,
    76                   const methodHandle& selected_method,
    78                   CallKind kind,
    77                   CallKind kind,
    79                   int index, TRAPS);
    78                   int index, TRAPS);
    96   Klass*  resolved_klass() const                 { return _resolved_klass; }
    95   Klass*  resolved_klass() const                 { return _resolved_klass; }
    97   Klass*  selected_klass() const                 { return _selected_klass; }
    96   Klass*  selected_klass() const                 { return _selected_klass; }
    98   methodHandle resolved_method() const           { return _resolved_method; }
    97   methodHandle resolved_method() const           { return _resolved_method; }
    99   methodHandle selected_method() const           { return _selected_method; }
    98   methodHandle selected_method() const           { return _selected_method; }
   100   Handle       resolved_appendix() const         { return _resolved_appendix; }
    99   Handle       resolved_appendix() const         { return _resolved_appendix; }
   101   Handle       resolved_method_type() const      { return _resolved_method_type; }
       
   102   Handle       resolved_method_name() const      { return _resolved_method_name; }
   100   Handle       resolved_method_name() const      { return _resolved_method_name; }
   103   // Materialize a java.lang.invoke.ResolvedMethodName for this resolved_method
   101   // Materialize a java.lang.invoke.ResolvedMethodName for this resolved_method
   104   void     set_resolved_method_name(TRAPS);
   102   void     set_resolved_method_name(TRAPS);
   105 
   103 
   106   BasicType    result_type() const               { return selected_method()->result_type(); }
   104   BasicType    result_type() const               { return selected_method()->result_type(); }
   205                                           bool checkpolymorphism,
   203                                           bool checkpolymorphism,
   206                                           bool in_imethod_resolve);
   204                                           bool in_imethod_resolve);
   207   static Method* lookup_method_in_interfaces(const LinkInfo& link_info);
   205   static Method* lookup_method_in_interfaces(const LinkInfo& link_info);
   208 
   206 
   209   static methodHandle lookup_polymorphic_method(const LinkInfo& link_info,
   207   static methodHandle lookup_polymorphic_method(const LinkInfo& link_info,
   210                                                 Handle *appendix_result_or_null,
   208                                                 Handle *appendix_result_or_null, TRAPS);
   211                                                 Handle *method_type_result, TRAPS);
       
   212  JVMCI_ONLY(public:) // Needed for CompilerToVM.resolveMethod()
   209  JVMCI_ONLY(public:) // Needed for CompilerToVM.resolveMethod()
   213   // Not Linktime so doesn't take LinkInfo
   210   // Not Linktime so doesn't take LinkInfo
   214   static methodHandle lookup_instance_method_in_klasses (Klass* klass, Symbol* name, Symbol* signature,
   211   static methodHandle lookup_instance_method_in_klasses (Klass* klass, Symbol* name, Symbol* signature,
   215                                                          Klass::PrivateLookupMode private_mode, TRAPS);
   212                                                          Klass::PrivateLookupMode private_mode, TRAPS);
   216  JVMCI_ONLY(private:)
   213  JVMCI_ONLY(private:)