src/share/vm/opto/escape.hpp

changeset 1989
60a14ad85270
parent 1907
c18cbe5936b8
child 2276
e4fcbeb5a698
     1.1 --- a/src/share/vm/opto/escape.hpp	Fri Jul 02 15:01:47 2010 -0700
     1.2 +++ b/src/share/vm/opto/escape.hpp	Fri Jul 02 17:30:30 2010 -0700
     1.3 @@ -227,6 +227,7 @@
     1.4    uint                     _noop_null; // ConN(#NULL)
     1.5  
     1.6    Compile *                  _compile; // Compile object for current compilation
     1.7 +  PhaseIterGVN *                _igvn; // Value numbering
     1.8  
     1.9    // Address of an element in _nodes.  Used when the element is to be modified
    1.10    PointsToNode *ptnode_adr(uint idx) const {
    1.11 @@ -257,7 +258,7 @@
    1.12    // walk the connection graph starting at the node corresponding to "n" and
    1.13    // add the index of everything it could point to, to "ptset".  This may cause
    1.14    // Phi's encountered to get (re)processed  (which requires "phase".)
    1.15 -  void PointsTo(VectorSet &ptset, Node * n, PhaseTransform *phase);
    1.16 +  void PointsTo(VectorSet &ptset, Node * n);
    1.17  
    1.18    //  Edge manipulation.  The "from_i" and "to_i" arguments are the
    1.19    //  node indices of the source and destination of the edge
    1.20 @@ -310,7 +311,7 @@
    1.21    // Node:  This assumes that escape analysis is run before
    1.22    //        PhaseIterGVN creation
    1.23    void record_for_optimizer(Node *n) {
    1.24 -    _compile->record_for_igvn(n);
    1.25 +    _igvn->_worklist.push(n);
    1.26    }
    1.27  
    1.28    // Set the escape state of a node
    1.29 @@ -320,16 +321,20 @@
    1.30    void verify_escape_state(int nidx, VectorSet& ptset, PhaseTransform* phase);
    1.31  
    1.32  public:
    1.33 -  ConnectionGraph(Compile *C);
    1.34 +  ConnectionGraph(Compile *C, PhaseIterGVN *igvn);
    1.35  
    1.36    // Check for non-escaping candidates
    1.37    static bool has_candidates(Compile *C);
    1.38  
    1.39 +  // Perform escape analysis
    1.40 +  static void do_analysis(Compile *C, PhaseIterGVN *igvn);
    1.41 +
    1.42    // Compute the escape information
    1.43    bool compute_escape();
    1.44  
    1.45    // escape state of a node
    1.46 -  PointsToNode::EscapeState escape_state(Node *n, PhaseTransform *phase);
    1.47 +  PointsToNode::EscapeState escape_state(Node *n);
    1.48 +
    1.49    // other information we have collected
    1.50    bool is_scalar_replaceable(Node *n) {
    1.51      if (_collecting || (n->_idx >= nodes_size()))

mercurial