hotspot/src/share/vm/opto/callGenerator.hpp
changeset 35086 bbf32241d851
parent 24948 bc074f400757
child 43943 e2fdae30bbc1
equal deleted inserted replaced
35085:839c8ba29724 35086:bbf32241d851
    47  protected:
    47  protected:
    48   CallGenerator(ciMethod* method) : _method(method) {}
    48   CallGenerator(ciMethod* method) : _method(method) {}
    49 
    49 
    50  public:
    50  public:
    51   // Accessors
    51   // Accessors
    52   ciMethod*         method() const              { return _method; }
    52   ciMethod*          method() const             { return _method; }
    53 
    53 
    54   // is_inline: At least some code implementing the method is copied here.
    54   // is_inline: At least some code implementing the method is copied here.
    55   virtual bool      is_inline() const           { return false; }
    55   virtual bool      is_inline() const           { return false; }
    56   // is_intrinsic: There's a method-specific way of generating the inline code.
    56   // is_intrinsic: There's a method-specific way of generating the inline code.
    57   virtual bool      is_intrinsic() const        { return false; }
    57   virtual bool      is_intrinsic() const        { return false; }
   121   static CallGenerator* for_osr(ciMethod* m, int osr_bci);
   121   static CallGenerator* for_osr(ciMethod* m, int osr_bci);
   122 
   122 
   123   // How to generate vanilla out-of-line call sites:
   123   // How to generate vanilla out-of-line call sites:
   124   static CallGenerator* for_direct_call(ciMethod* m, bool separate_io_projs = false);   // static, special
   124   static CallGenerator* for_direct_call(ciMethod* m, bool separate_io_projs = false);   // static, special
   125   static CallGenerator* for_virtual_call(ciMethod* m, int vtable_index);  // virtual, interface
   125   static CallGenerator* for_virtual_call(ciMethod* m, int vtable_index);  // virtual, interface
   126   static CallGenerator* for_dynamic_call(ciMethod* m);   // invokedynamic
       
   127 
   126 
   128   static CallGenerator* for_method_handle_call(  JVMState* jvms, ciMethod* caller, ciMethod* callee, bool delayed_forbidden);
   127   static CallGenerator* for_method_handle_call(  JVMState* jvms, ciMethod* caller, ciMethod* callee, bool delayed_forbidden);
   129   static CallGenerator* for_method_handle_inline(JVMState* jvms, ciMethod* caller, ciMethod* callee, bool& input_not_const);
   128   static CallGenerator* for_method_handle_inline(JVMState* jvms, ciMethod* caller, ciMethod* callee, bool& input_not_const);
   130 
   129 
   131   // How to generate a replace a direct call with an inline version
   130   // How to generate a replace a direct call with an inline version
   168   static void print_inlining(Compile* C, ciMethod* callee, int inline_level, int bci, const char* msg) {
   167   static void print_inlining(Compile* C, ciMethod* callee, int inline_level, int bci, const char* msg) {
   169     if (C->print_inlining()) {
   168     if (C->print_inlining()) {
   170       C->print_inlining(callee, inline_level, bci, msg);
   169       C->print_inlining(callee, inline_level, bci, msg);
   171     }
   170     }
   172   }
   171   }
       
   172 
       
   173   static bool is_inlined_mh_linker(JVMState* jvms, ciMethod* m);
   173 };
   174 };
   174 
   175 
   175 
   176 
   176 //------------------------InlineCallGenerator----------------------------------
   177 //------------------------InlineCallGenerator----------------------------------
   177 class InlineCallGenerator : public CallGenerator {
   178 class InlineCallGenerator : public CallGenerator {