src/hotspot/share/opto/loopnode.hpp
changeset 51489 b5abbca5b2dc
parent 51333 f6641fcf7b7e
child 52414 6d42c07ba238
equal deleted inserted replaced
51488:d14d24d076b7 51489:b5abbca5b2dc
   920     PhaseTransform(Ideal_Loop),
   920     PhaseTransform(Ideal_Loop),
   921     _igvn(igvn),
   921     _igvn(igvn),
   922     _verify_me(NULL),
   922     _verify_me(NULL),
   923     _verify_only(true),
   923     _verify_only(true),
   924     _dom_lca_tags(arena()) { // Thread::resource_area
   924     _dom_lca_tags(arena()) { // Thread::resource_area
   925     build_and_optimize(false, false);
   925     build_and_optimize(LoopOptsVerify);
   926   }
   926   }
   927 
   927 
   928   // build the loop tree and perform any requested optimizations
   928   // build the loop tree and perform any requested optimizations
   929   void build_and_optimize(bool do_split_if, bool skip_loop_opts, bool last_round = false);
   929   void build_and_optimize(LoopOptsMode mode);
   930 
   930 
   931   // Dominators for the sea of nodes
   931   // Dominators for the sea of nodes
   932   void Dominators();
   932   void Dominators();
   933   Node *dom_lca( Node *n1, Node *n2 ) const {
   933   Node *dom_lca( Node *n1, Node *n2 ) const {
   934     return find_non_split_ctrl(dom_lca_internal(n1, n2));
   934     return find_non_split_ctrl(dom_lca_internal(n1, n2));
   935   }
   935   }
   936   Node *dom_lca_internal( Node *n1, Node *n2 ) const;
   936   Node *dom_lca_internal( Node *n1, Node *n2 ) const;
   937 
   937 
   938   // Compute the Ideal Node to Loop mapping
   938   // Compute the Ideal Node to Loop mapping
   939   PhaseIdealLoop( PhaseIterGVN &igvn, bool do_split_ifs, bool skip_loop_opts = false, bool last_round = false) :
   939   PhaseIdealLoop(PhaseIterGVN &igvn, LoopOptsMode mode) :
   940     PhaseTransform(Ideal_Loop),
   940     PhaseTransform(Ideal_Loop),
   941     _igvn(igvn),
   941     _igvn(igvn),
   942     _verify_me(NULL),
   942     _verify_me(NULL),
   943     _verify_only(false),
   943     _verify_only(false),
   944     _dom_lca_tags(arena()) { // Thread::resource_area
   944     _dom_lca_tags(arena()) { // Thread::resource_area
   945     build_and_optimize(do_split_ifs, skip_loop_opts, last_round);
   945     build_and_optimize(mode);
   946   }
   946   }
   947 
   947 
   948   // Verify that verify_me made the same decisions as a fresh run.
   948   // Verify that verify_me made the same decisions as a fresh run.
   949   PhaseIdealLoop( PhaseIterGVN &igvn, const PhaseIdealLoop *verify_me) :
   949   PhaseIdealLoop(PhaseIterGVN &igvn, const PhaseIdealLoop *verify_me) :
   950     PhaseTransform(Ideal_Loop),
   950     PhaseTransform(Ideal_Loop),
   951     _igvn(igvn),
   951     _igvn(igvn),
   952     _verify_me(verify_me),
   952     _verify_me(verify_me),
   953     _verify_only(false),
   953     _verify_only(false),
   954     _dom_lca_tags(arena()) { // Thread::resource_area
   954     _dom_lca_tags(arena()) { // Thread::resource_area
   955     build_and_optimize(false, false);
   955     build_and_optimize(LoopOptsVerify);
   956   }
   956   }
   957 
   957 
   958   // Build and verify the loop tree without modifying the graph.  This
   958   // Build and verify the loop tree without modifying the graph.  This
   959   // is useful to verify that all inputs properly dominate their uses.
   959   // is useful to verify that all inputs properly dominate their uses.
   960   static void verify(PhaseIterGVN& igvn) {
   960   static void verify(PhaseIterGVN& igvn) {