src/share/vm/opto/callnode.hpp

changeset 4409
d092d1b31229
parent 4313
beebba0acc11
child 4478
a7114d3d712e
     1.1 --- a/src/share/vm/opto/callnode.hpp	Fri Dec 21 10:27:49 2012 -0800
     1.2 +++ b/src/share/vm/opto/callnode.hpp	Sun Dec 23 17:08:22 2012 +0100
     1.3 @@ -507,6 +507,7 @@
     1.4    Node* exobj;
     1.5  };
     1.6  
     1.7 +class CallGenerator;
     1.8  
     1.9  //------------------------------CallNode---------------------------------------
    1.10  // Call nodes now subsume the function of debug nodes at callsites, so they
    1.11 @@ -517,26 +518,31 @@
    1.12    const TypeFunc *_tf;        // Function type
    1.13    address      _entry_point;  // Address of method being called
    1.14    float        _cnt;          // Estimate of number of times called
    1.15 +  CallGenerator* _generator;  // corresponding CallGenerator for some late inline calls
    1.16  
    1.17    CallNode(const TypeFunc* tf, address addr, const TypePtr* adr_type)
    1.18      : SafePointNode(tf->domain()->cnt(), NULL, adr_type),
    1.19        _tf(tf),
    1.20        _entry_point(addr),
    1.21 -      _cnt(COUNT_UNKNOWN)
    1.22 +      _cnt(COUNT_UNKNOWN),
    1.23 +      _generator(NULL)
    1.24    {
    1.25      init_class_id(Class_Call);
    1.26    }
    1.27  
    1.28 -  const TypeFunc* tf()        const { return _tf; }
    1.29 -  const address entry_point() const { return _entry_point; }
    1.30 -  const float   cnt()         const { return _cnt; }
    1.31 +  const TypeFunc* tf()         const { return _tf; }
    1.32 +  const address  entry_point() const { return _entry_point; }
    1.33 +  const float    cnt()         const { return _cnt; }
    1.34 +  CallGenerator* generator()   const { return _generator; }
    1.35  
    1.36 -  void set_tf(const TypeFunc* tf) { _tf = tf; }
    1.37 -  void set_entry_point(address p) { _entry_point = p; }
    1.38 -  void set_cnt(float c)           { _cnt = c; }
    1.39 +  void set_tf(const TypeFunc* tf)       { _tf = tf; }
    1.40 +  void set_entry_point(address p)       { _entry_point = p; }
    1.41 +  void set_cnt(float c)                 { _cnt = c; }
    1.42 +  void set_generator(CallGenerator* cg) { _generator = cg; }
    1.43  
    1.44    virtual const Type *bottom_type() const;
    1.45    virtual const Type *Value( PhaseTransform *phase ) const;
    1.46 +  virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
    1.47    virtual Node *Identity( PhaseTransform *phase ) { return this; }
    1.48    virtual uint        cmp( const Node &n ) const;
    1.49    virtual uint        size_of() const = 0;

mercurial