< prev index next >

src/share/vm/opto/loopnode.cpp

Print this page




2208   while (_deadlist.size()) {
2209     _igvn.remove_globally_dead_node(_deadlist.pop());
2210   }
2211 
2212   if (stop_early) {
2213     assert(do_expensive_nodes, "why are we here?");
2214     if (process_expensive_nodes()) {
2215       // If we made some progress when processing expensive nodes then
2216       // the IGVN may modify the graph in a way that will allow us to
2217       // make some more progress: we need to try processing expensive
2218       // nodes again.
2219       C->set_major_progress();
2220     }
2221     _igvn.optimize();
2222     return;
2223   }
2224 
2225   // Some parser-inserted loop predicates could never be used by loop
2226   // predication or they were moved away from loop during some optimizations.
2227   // For example, peeling. Eliminate them before next loop optimizations.
2228   if (UseLoopPredicate) {
2229     eliminate_useless_predicates();
2230   }
2231 
2232 #ifndef PRODUCT
2233   C->verify_graph_edges();
2234   if (_verify_me) {             // Nested verify pass?
2235     // Check to see if the verify mode is broken
2236     assert(C->unique() == unique, "non-optimize mode made Nodes? ? ?");
2237     return;
2238   }
2239   if(VerifyLoopOptimizations) verify();
2240   if(TraceLoopOpts && C->has_loops()) {
2241     _ltree_root->dump();
2242   }
2243 #endif
2244 
2245   if (skip_loop_opts) {
2246     // restore major progress flag
2247     for (int i = 0; i < old_progress; i++) {
2248       C->set_major_progress();
2249     }
2250 




2208   while (_deadlist.size()) {
2209     _igvn.remove_globally_dead_node(_deadlist.pop());
2210   }
2211 
2212   if (stop_early) {
2213     assert(do_expensive_nodes, "why are we here?");
2214     if (process_expensive_nodes()) {
2215       // If we made some progress when processing expensive nodes then
2216       // the IGVN may modify the graph in a way that will allow us to
2217       // make some more progress: we need to try processing expensive
2218       // nodes again.
2219       C->set_major_progress();
2220     }
2221     _igvn.optimize();
2222     return;
2223   }
2224 
2225   // Some parser-inserted loop predicates could never be used by loop
2226   // predication or they were moved away from loop during some optimizations.
2227   // For example, peeling. Eliminate them before next loop optimizations.

2228   eliminate_useless_predicates();

2229 
2230 #ifndef PRODUCT
2231   C->verify_graph_edges();
2232   if (_verify_me) {             // Nested verify pass?
2233     // Check to see if the verify mode is broken
2234     assert(C->unique() == unique, "non-optimize mode made Nodes? ? ?");
2235     return;
2236   }
2237   if(VerifyLoopOptimizations) verify();
2238   if(TraceLoopOpts && C->has_loops()) {
2239     _ltree_root->dump();
2240   }
2241 #endif
2242 
2243   if (skip_loop_opts) {
2244     // restore major progress flag
2245     for (int i = 0; i < old_progress; i++) {
2246       C->set_major_progress();
2247     }
2248 


< prev index next >