src/share/vm/opto/callGenerator.hpp

changeset 4409
d092d1b31229
parent 4357
ad5dd04754ee
child 5110
6f3fd5150b67
     1.1 --- a/src/share/vm/opto/callGenerator.hpp	Fri Dec 21 10:27:49 2012 -0800
     1.2 +++ b/src/share/vm/opto/callGenerator.hpp	Sun Dec 23 17:08:22 2012 +0100
     1.3 @@ -68,6 +68,12 @@
     1.4  
     1.5    // is_late_inline: supports conversion of call into an inline
     1.6    virtual bool      is_late_inline() const      { return false; }
     1.7 +  // same but for method handle calls
     1.8 +  virtual bool      is_mh_late_inline() const   { return false; }
     1.9 +
    1.10 +  // for method handle calls: have we tried inlinining the call already?
    1.11 +  virtual bool      already_attempted() const   { ShouldNotReachHere(); return false; }
    1.12 +
    1.13    // Replace the call with an inline version of the code
    1.14    virtual void do_late_inline() { ShouldNotReachHere(); }
    1.15  
    1.16 @@ -112,11 +118,13 @@
    1.17    static CallGenerator* for_virtual_call(ciMethod* m, int vtable_index);  // virtual, interface
    1.18    static CallGenerator* for_dynamic_call(ciMethod* m);   // invokedynamic
    1.19  
    1.20 -  static CallGenerator* for_method_handle_call(  JVMState* jvms, ciMethod* caller, ciMethod* callee);
    1.21 -  static CallGenerator* for_method_handle_inline(JVMState* jvms, ciMethod* caller, ciMethod* callee);
    1.22 +  static CallGenerator* for_method_handle_call(  JVMState* jvms, ciMethod* caller, ciMethod* callee, bool delayed_forbidden);
    1.23 +  static CallGenerator* for_method_handle_inline(JVMState* jvms, ciMethod* caller, ciMethod* callee, bool& input_not_const);
    1.24  
    1.25    // How to generate a replace a direct call with an inline version
    1.26    static CallGenerator* for_late_inline(ciMethod* m, CallGenerator* inline_cg);
    1.27 +  static CallGenerator* for_mh_late_inline(ciMethod* caller, ciMethod* callee, bool input_not_const);
    1.28 +  static CallGenerator* for_string_late_inline(ciMethod* m, CallGenerator* inline_cg);
    1.29  
    1.30    // How to make a call but defer the decision whether to inline or not.
    1.31    static CallGenerator* for_warm_call(WarmCallInfo* ci,
    1.32 @@ -147,6 +155,8 @@
    1.33                                                  CallGenerator* cg);
    1.34    virtual Node* generate_predicate(JVMState* jvms) { return NULL; };
    1.35  
    1.36 +  virtual void print_inlining_late(const char* msg) { ShouldNotReachHere(); }
    1.37 +
    1.38    static void print_inlining(Compile* C, ciMethod* callee, int inline_level, int bci, const char* msg) {
    1.39      if (PrintInlining)
    1.40        C->print_inlining(callee, inline_level, bci, msg);

mercurial