< prev index next >


Print this page


@@ -36,10 +36,12 @@
 class CountedLoopNode;
 class IdealLoopTree;
 class LoopNode;
 class Node;
 class OuterStripMinedLoopEndNode;
+class ShenandoahBarrierNode;
+class ShenandoahWriteBarrierNode;
 class PathFrequency;
 class PhaseIdealLoop;
 class CountedLoopReserveKit;
 class VectorSet;
 class Invariance;

@@ -634,10 +636,12 @@
 // loop tree.  Drives the loop-based transformations on the ideal graph.
 class PhaseIdealLoop : public PhaseTransform {
   friend class IdealLoopTree;
   friend class SuperWord;
   friend class CountedLoopReserveKit;
+  friend class ShenandoahBarrierNode;
+  friend class ShenandoahWriteBarrierNode;
   // Pre-computed def-use info
   PhaseIterGVN &_igvn;
   // Head of loop tree

@@ -861,11 +865,12 @@
   IdealLoopTree *sort( IdealLoopTree *loop, IdealLoopTree *innermost );
   // Place Data nodes in some loop nest
   void build_loop_early( VectorSet &visited, Node_List &worklist, Node_Stack &nstack );
   void build_loop_late ( VectorSet &visited, Node_List &worklist, Node_Stack &nstack );
-  void build_loop_late_post ( Node* n );
+  void build_loop_late_post_work(Node* n, bool pinned);
+  void build_loop_late_post(Node* n);
   void verify_strip_mined_scheduling(Node *n, Node* least);
   // Array of immediate dominance info for each CFG node indexed by node idx
   uint _idom_size;

@@ -1307,11 +1312,10 @@
 #ifndef PRODUCT
   void dump( ) const;
   void dump( IdealLoopTree *loop, uint rpo_idx, Node_List &rpo_list ) const;
-  void rpo( Node *start, Node_Stack &stk, VectorSet &visited, Node_List &rpo_list ) const;
   void verify() const;          // Major slow  :-)
   void verify_compare( Node *n, const PhaseIdealLoop *loop_verify, VectorSet &visited ) const;
   IdealLoopTree *get_loop_idx(Node* n) const {
     // Dead nodes have no loop, so return the top level loop instead
     return _nodes[n->_idx] ? (IdealLoopTree*)_nodes[n->_idx] : _ltree_root;

@@ -1319,10 +1323,11 @@
   // Print some stats
   static void print_statistics();
   static int _loop_invokes;     // Count of PhaseIdealLoop invokes
   static int _loop_work;        // Sum of PhaseIdealLoop x _unique
+  void rpo( Node *start, Node_Stack &stk, VectorSet &visited, Node_List &rpo_list ) const;
 // This kit may be used for making of a reserved copy of a loop before this loop
 //  goes under non-reversible changes.
< prev index next >