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()))