src/hotspot/share/opto/loopnode.hpp
changeset 50525 767cdb97f103
parent 50180 ffa644980dff
child 50558 d9936e986e4f
--- a/src/hotspot/share/opto/loopnode.hpp	Tue Jun 12 07:52:30 2018 -0700
+++ b/src/hotspot/share/opto/loopnode.hpp	Tue Jun 12 17:40:28 2018 +0200
@@ -912,7 +912,7 @@
   }
 
   // build the loop tree and perform any requested optimizations
-  void build_and_optimize(bool do_split_if, bool skip_loop_opts);
+  void build_and_optimize(bool do_split_if, bool skip_loop_opts, bool last_round = false);
 
   // Dominators for the sea of nodes
   void Dominators();
@@ -922,13 +922,13 @@
   Node *dom_lca_internal( Node *n1, Node *n2 ) const;
 
   // Compute the Ideal Node to Loop mapping
-  PhaseIdealLoop( PhaseIterGVN &igvn, bool do_split_ifs, bool skip_loop_opts = false) :
+  PhaseIdealLoop( PhaseIterGVN &igvn, bool do_split_ifs, bool skip_loop_opts = false, bool last_round = false) :
     PhaseTransform(Ideal_Loop),
     _igvn(igvn),
     _dom_lca_tags(arena()), // Thread::resource_area
     _verify_me(NULL),
     _verify_only(false) {
-    build_and_optimize(do_split_ifs, skip_loop_opts);
+    build_and_optimize(do_split_ifs, skip_loop_opts, last_round);
   }
 
   // Verify that verify_me made the same decisions as a fresh run.
@@ -1227,9 +1227,9 @@
 
   // Check for aggressive application of 'split-if' optimization,
   // using basic block level info.
-  void  split_if_with_blocks     ( VectorSet &visited, Node_Stack &nstack );
+  void  split_if_with_blocks     ( VectorSet &visited, Node_Stack &nstack, bool last_round );
   Node *split_if_with_blocks_pre ( Node *n );
-  void  split_if_with_blocks_post( Node *n );
+  void  split_if_with_blocks_post( Node *n, bool last_round );
   Node *has_local_phi_input( Node *n );
   // Mark an IfNode as being dominated by a prior test,
   // without actually altering the CFG (and hence IDOM info).