< prev index next >

src/share/vm/opto/loopnode.cpp

Print this page




2391   // Keep loop predicates and perform optimizations with them
2392   // until no more loop optimizations could be done.
2393   // After that switch predicates off and do more loop optimizations.
2394   if (!C->major_progress() && (C->predicate_count() > 0)) {
2395      C->cleanup_loop_predicates(_igvn);
2396 #ifndef PRODUCT
2397      if (TraceLoopOpts) {
2398        tty->print_cr("PredicatesOff");
2399      }
2400 #endif
2401      C->set_major_progress();
2402   }
2403 
2404   // Convert scalar to superword operations at the end of all loop opts.
2405   if (UseSuperWord && C->has_loops() && !C->major_progress()) {
2406     // SuperWord transform
2407     SuperWord sw(this);
2408     for (LoopTreeIterator iter(_ltree_root); !iter.done(); iter.next()) {
2409       IdealLoopTree* lpt = iter.current();
2410       if (lpt->is_counted()) {
2411         sw.transform_loop(lpt);
2412       }
2413     }
2414   }
2415 
2416   // Cleanup any modified bits
2417   _igvn.optimize();
2418 
2419   // disable assert until issue with split_flow_path is resolved (6742111)
2420   // assert(!_has_irreducible_loops || C->parsed_irreducible_loop() || C->is_osr_compilation(),
2421   //        "shouldn't introduce irreducible loops");
2422 
2423   if (C->log() != NULL) {
2424     log_loop_tree(_ltree_root, _ltree_root, C->log());
2425   }
2426 }
2427 
2428 #ifndef PRODUCT
2429 //------------------------------print_statistics-------------------------------
2430 int PhaseIdealLoop::_loop_invokes=0;// Count of PhaseIdealLoop invokes
2431 int PhaseIdealLoop::_loop_work=0; // Sum of PhaseIdealLoop x unique




2391   // Keep loop predicates and perform optimizations with them
2392   // until no more loop optimizations could be done.
2393   // After that switch predicates off and do more loop optimizations.
2394   if (!C->major_progress() && (C->predicate_count() > 0)) {
2395      C->cleanup_loop_predicates(_igvn);
2396 #ifndef PRODUCT
2397      if (TraceLoopOpts) {
2398        tty->print_cr("PredicatesOff");
2399      }
2400 #endif
2401      C->set_major_progress();
2402   }
2403 
2404   // Convert scalar to superword operations at the end of all loop opts.
2405   if (UseSuperWord && C->has_loops() && !C->major_progress()) {
2406     // SuperWord transform
2407     SuperWord sw(this);
2408     for (LoopTreeIterator iter(_ltree_root); !iter.done(); iter.next()) {
2409       IdealLoopTree* lpt = iter.current();
2410       if (lpt->is_counted()) {
2411         sw.transform_loop(lpt, true);
2412       }
2413     }
2414   }
2415 
2416   // Cleanup any modified bits
2417   _igvn.optimize();
2418 
2419   // disable assert until issue with split_flow_path is resolved (6742111)
2420   // assert(!_has_irreducible_loops || C->parsed_irreducible_loop() || C->is_osr_compilation(),
2421   //        "shouldn't introduce irreducible loops");
2422 
2423   if (C->log() != NULL) {
2424     log_loop_tree(_ltree_root, _ltree_root, C->log());
2425   }
2426 }
2427 
2428 #ifndef PRODUCT
2429 //------------------------------print_statistics-------------------------------
2430 int PhaseIdealLoop::_loop_invokes=0;// Count of PhaseIdealLoop invokes
2431 int PhaseIdealLoop::_loop_work=0; // Sum of PhaseIdealLoop x unique


< prev index next >