--- old/src/hotspot/share/opto/loopnode.hpp 2018-11-30 10:24:06.977582457 +0100 +++ new/src/hotspot/share/opto/loopnode.hpp 2018-11-30 10:24:06.825583997 +0100 @@ -38,6 +38,8 @@ class LoopNode; class Node; class OuterStripMinedLoopEndNode; +class ShenandoahBarrierNode; +class ShenandoahWriteBarrierNode; class PathFrequency; class PhaseIdealLoop; class CountedLoopReserveKit; @@ -636,6 +638,8 @@ friend class IdealLoopTree; friend class SuperWord; friend class CountedLoopReserveKit; + friend class ShenandoahBarrierNode; + friend class ShenandoahWriteBarrierNode; // Pre-computed def-use info PhaseIterGVN &_igvn; @@ -863,7 +867,8 @@ // 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 @@ -1309,7 +1314,6 @@ #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 { @@ -1321,6 +1325,7 @@ static int _loop_invokes; // Count of PhaseIdealLoop invokes static int _loop_work; // Sum of PhaseIdealLoop x _unique #endif + 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