src/hotspot/share/opto/loopTransform.cpp
changeset 54699 1a5305f51bfd
parent 54698 3ebf58dbf5d8
child 54700 d6f55ea4e325
equal deleted inserted replaced
54698:3ebf58dbf5d8 54699:1a5305f51bfd
  3247     return false;
  3247     return false;
  3248 
  3248 
  3249   // Clean out prior deadwood
  3249   // Clean out prior deadwood
  3250   DCE_loop_body();
  3250   DCE_loop_body();
  3251 
  3251 
  3252 
       
  3253   // Look for loop-exit tests with my 50/50 guesses from the Parsing stage.
  3252   // Look for loop-exit tests with my 50/50 guesses from the Parsing stage.
  3254   // Replace with a 1-in-10 exit guess.
  3253   // Replace with a 1-in-10 exit guess.
  3255   if (_parent /*not the root loop*/ &&
  3254   if (!is_root() && is_loop()) {
  3256       !_irreducible &&
       
  3257       // Also ignore the occasional dead backedge
       
  3258       !tail()->is_top()) {
       
  3259     adjust_loop_exit_prob(phase);
  3255     adjust_loop_exit_prob(phase);
  3260   }
  3256   }
  3261 
  3257 
  3262   // Gate unrolling, RCE and peeling efforts.
  3258   // Unrolling, RCE and peeling efforts, iff innermost loop.
  3263   if (!_child &&                // If not an inner loop, do not split
  3259   if (_allow_optimizations && is_innermost()) {
  3264       !_irreducible &&
       
  3265       _allow_optimizations &&
       
  3266       !tail()->is_top()) {     // Also ignore the occasional dead backedge
       
  3267     if (!_has_call) {
  3260     if (!_has_call) {
  3268         if (!iteration_split_impl(phase, old_new)) {
  3261       if (!iteration_split_impl(phase, old_new)) {
  3269           return false;
  3262         return false;
  3270         }
  3263       }
  3271     } else if (policy_unswitching(phase)) {
  3264     } else if (policy_unswitching(phase)) {
  3272       phase->do_unswitching(this, old_new);
  3265       phase->do_unswitching(this, old_new);
  3273     }
  3266     }
  3274   }
  3267   }
  3275 
  3268 
  3538 
  3531 
  3539 
  3532 
  3540 
  3533 
  3541 bool PhaseIdealLoop::intrinsify_fill(IdealLoopTree* lpt) {
  3534 bool PhaseIdealLoop::intrinsify_fill(IdealLoopTree* lpt) {
  3542   // Only for counted inner loops
  3535   // Only for counted inner loops
  3543   if (!lpt->is_counted() || !lpt->is_inner()) {
  3536   if (!lpt->is_counted() || !lpt->is_innermost()) {
  3544     return false;
  3537     return false;
  3545   }
  3538   }
  3546 
  3539 
  3547   // Must have constant stride
  3540   // Must have constant stride
  3548   CountedLoopNode* head = lpt->_head->as_CountedLoop();
  3541   CountedLoopNode* head = lpt->_head->as_CountedLoop();