hotspot/src/share/vm/opto/callGenerator.hpp

Print this page




  48   CallGenerator(ciMethod* method) : _method(method) {}
  49 
  50  public:
  51   // Accessors
  52   ciMethod*         method() const              { return _method; }
  53 
  54   // is_inline: At least some code implementing the method is copied here.
  55   virtual bool      is_inline() const           { return false; }
  56   // is_intrinsic: There's a method-specific way of generating the inline code.
  57   virtual bool      is_intrinsic() const        { return false; }
  58   // is_parse: Bytecodes implementing the specific method are copied here.
  59   virtual bool      is_parse() const            { return false; }
  60   // is_virtual: The call uses the receiver type to select or check the method.
  61   virtual bool      is_virtual() const          { return false; }
  62   // is_deferred: The decision whether to inline or not is deferred.
  63   virtual bool      is_deferred() const         { return false; }
  64   // is_predicted: Uses an explicit check against a predicted type.
  65   virtual bool      is_predicted() const        { return false; }
  66   // is_trap: Does not return to the caller.  (E.g., uncommon trap.)
  67   virtual bool      is_trap() const             { return false; }


  68 
  69   // is_late_inline: supports conversion of call into an inline
  70   virtual bool      is_late_inline() const      { return false; }
  71   // same but for method handle calls
  72   virtual bool      is_mh_late_inline() const   { return false; }
  73 
  74   // for method handle calls: have we tried inlinining the call already?
  75   virtual bool      already_attempted() const   { ShouldNotReachHere(); return false; }
  76 
  77   // Replace the call with an inline version of the code
  78   virtual void do_late_inline() { ShouldNotReachHere(); }
  79 
  80   virtual CallStaticJavaNode* call_node() const { ShouldNotReachHere(); return NULL; }
  81 
  82   // Note:  It is possible for a CG to be both inline and virtual.
  83   // (The hashCode intrinsic does a vtable check and an inlined fast path.)
  84 
  85   // Utilities:
  86   const TypeFunc*   tf() const;
  87 




  48   CallGenerator(ciMethod* method) : _method(method) {}
  49 
  50  public:
  51   // Accessors
  52   ciMethod*         method() const              { return _method; }
  53 
  54   // is_inline: At least some code implementing the method is copied here.
  55   virtual bool      is_inline() const           { return false; }
  56   // is_intrinsic: There's a method-specific way of generating the inline code.
  57   virtual bool      is_intrinsic() const        { return false; }
  58   // is_parse: Bytecodes implementing the specific method are copied here.
  59   virtual bool      is_parse() const            { return false; }
  60   // is_virtual: The call uses the receiver type to select or check the method.
  61   virtual bool      is_virtual() const          { return false; }
  62   // is_deferred: The decision whether to inline or not is deferred.
  63   virtual bool      is_deferred() const         { return false; }
  64   // is_predicted: Uses an explicit check against a predicted type.
  65   virtual bool      is_predicted() const        { return false; }
  66   // is_trap: Does not return to the caller.  (E.g., uncommon trap.)
  67   virtual bool      is_trap() const             { return false; }
  68   // does_virtual_dispatch: Should try inlining as normal method first.
  69   virtual bool      does_virtual_dispatch() const     { return false; }
  70 
  71   // is_late_inline: supports conversion of call into an inline
  72   virtual bool      is_late_inline() const      { return false; }
  73   // same but for method handle calls
  74   virtual bool      is_mh_late_inline() const   { return false; }
  75 
  76   // for method handle calls: have we tried inlinining the call already?
  77   virtual bool      already_attempted() const   { ShouldNotReachHere(); return false; }
  78 
  79   // Replace the call with an inline version of the code
  80   virtual void do_late_inline() { ShouldNotReachHere(); }
  81 
  82   virtual CallStaticJavaNode* call_node() const { ShouldNotReachHere(); return NULL; }
  83 
  84   // Note:  It is possible for a CG to be both inline and virtual.
  85   // (The hashCode intrinsic does a vtable check and an inlined fast path.)
  86 
  87   // Utilities:
  88   const TypeFunc*   tf() const;
  89