451 bool iteration_split_impl( PhaseIdealLoop *phase, Node_List &old_new ); 452 453 // Given dominators, try to find loops with calls that must always be 454 // executed (call dominates loop tail). These loops do not need non-call 455 // safepoints (ncsfpt). 456 void check_safepts(VectorSet &visited, Node_List &stack); 457 458 // Allpaths backwards scan from loop tail, terminating each path at first safepoint 459 // encountered. 460 void allpaths_check_safepts(VectorSet &visited, Node_List &stack); 461 462 // Remove safepoints from loop. Optionally keeping one. 463 void remove_safepoints(PhaseIdealLoop* phase, bool keep_one); 464 465 // Convert to counted loops where possible 466 void counted_loop( PhaseIdealLoop *phase ); 467 468 // Check for Node being a loop-breaking test 469 Node *is_loop_exit(Node *iff) const; 470 471 // Returns true if ctrl is executed on every complete iteration 472 bool dominates_backedge(Node* ctrl); 473 474 // Remove simplistic dead code from loop body 475 void DCE_loop_body(); 476 477 // Look for loop-exit tests with my 50/50 guesses from the Parsing stage. 478 // Replace with a 1-in-10 exit guess. 479 void adjust_loop_exit_prob( PhaseIdealLoop *phase ); 480 481 // Return TRUE or FALSE if the loop should never be RCE'd or aligned. 482 // Useful for unrolling loops with NO array accesses. 483 bool policy_peel_only( PhaseIdealLoop *phase ) const; 484 485 // Return TRUE or FALSE if the loop should be unswitched -- clone 486 // loop with an invariant test 487 bool policy_unswitching( PhaseIdealLoop *phase ) const; 488 489 // Micro-benchmark spamming. Remove empty loops. 490 bool policy_do_remove_empty_loop( PhaseIdealLoop *phase ); 491 492 // Convert one iteration loop into normal code. 493 bool policy_do_one_iteration_loop( PhaseIdealLoop *phase ); | 451 bool iteration_split_impl( PhaseIdealLoop *phase, Node_List &old_new ); 452 453 // Given dominators, try to find loops with calls that must always be 454 // executed (call dominates loop tail). These loops do not need non-call 455 // safepoints (ncsfpt). 456 void check_safepts(VectorSet &visited, Node_List &stack); 457 458 // Allpaths backwards scan from loop tail, terminating each path at first safepoint 459 // encountered. 460 void allpaths_check_safepts(VectorSet &visited, Node_List &stack); 461 462 // Remove safepoints from loop. Optionally keeping one. 463 void remove_safepoints(PhaseIdealLoop* phase, bool keep_one); 464 465 // Convert to counted loops where possible 466 void counted_loop( PhaseIdealLoop *phase ); 467 468 // Check for Node being a loop-breaking test 469 Node *is_loop_exit(Node *iff) const; 470 471 // Remove simplistic dead code from loop body 472 void DCE_loop_body(); 473 474 // Look for loop-exit tests with my 50/50 guesses from the Parsing stage. 475 // Replace with a 1-in-10 exit guess. 476 void adjust_loop_exit_prob( PhaseIdealLoop *phase ); 477 478 // Return TRUE or FALSE if the loop should never be RCE'd or aligned. 479 // Useful for unrolling loops with NO array accesses. 480 bool policy_peel_only( PhaseIdealLoop *phase ) const; 481 482 // Return TRUE or FALSE if the loop should be unswitched -- clone 483 // loop with an invariant test 484 bool policy_unswitching( PhaseIdealLoop *phase ) const; 485 486 // Micro-benchmark spamming. Remove empty loops. 487 bool policy_do_remove_empty_loop( PhaseIdealLoop *phase ); 488 489 // Convert one iteration loop into normal code. 490 bool policy_do_one_iteration_loop( PhaseIdealLoop *phase ); |