308 309 // Set loop nesting depth. Accumulate has_call bits. 310 int set_nest( uint depth ); 311 312 // Split out multiple fall-in edges from the loop header. Move them to a 313 // private RegionNode before the loop. This becomes the loop landing pad. 314 void split_fall_in( PhaseIdealLoop *phase, int fall_in_cnt ); 315 316 // Split out the outermost loop from this shared header. 317 void split_outer_loop( PhaseIdealLoop *phase ); 318 319 // Merge all the backedges from the shared header into a private Region. 320 // Feed that region as the one backedge to this loop. 321 void merge_many_backedges( PhaseIdealLoop *phase ); 322 323 // Split shared headers and insert loop landing pads. 324 // Insert a LoopNode to replace the RegionNode. 325 // Returns TRUE if loop tree is structurally changed. 326 bool beautify_loops( PhaseIdealLoop *phase ); 327 328 // Perform iteration-splitting on inner loops. Split iterations to avoid 329 // range checks or one-shot null checks. 330 void iteration_split( PhaseIdealLoop *phase, Node_List &old_new ); 331 332 // Driver for various flavors of iteration splitting 333 void iteration_split_impl( PhaseIdealLoop *phase, Node_List &old_new ); 334 335 // Given dominators, try to find loops with calls that must always be 336 // executed (call dominates loop tail). These loops do not need non-call 337 // safepoints (ncsfpt). 338 void check_safepts(VectorSet &visited, Node_List &stack); 339 340 // Allpaths backwards scan from loop tail, terminating each path at first safepoint 341 // encountered. 342 void allpaths_check_safepts(VectorSet &visited, Node_List &stack); 343 344 // Convert to counted loops where possible 345 void counted_loop( PhaseIdealLoop *phase ); 346 347 // Check for Node being a loop-breaking test 348 Node *is_loop_exit(Node *iff) const; 349 350 // Returns true if ctrl is executed on every complete iteration 351 bool dominates_backedge(Node* ctrl); 352 353 // Remove simplistic dead code from loop body | 308 309 // Set loop nesting depth. Accumulate has_call bits. 310 int set_nest( uint depth ); 311 312 // Split out multiple fall-in edges from the loop header. Move them to a 313 // private RegionNode before the loop. This becomes the loop landing pad. 314 void split_fall_in( PhaseIdealLoop *phase, int fall_in_cnt ); 315 316 // Split out the outermost loop from this shared header. 317 void split_outer_loop( PhaseIdealLoop *phase ); 318 319 // Merge all the backedges from the shared header into a private Region. 320 // Feed that region as the one backedge to this loop. 321 void merge_many_backedges( PhaseIdealLoop *phase ); 322 323 // Split shared headers and insert loop landing pads. 324 // Insert a LoopNode to replace the RegionNode. 325 // Returns TRUE if loop tree is structurally changed. 326 bool beautify_loops( PhaseIdealLoop *phase ); 327 328 // Perform iteration-splitting on inner loops. Split iterations to 329 // avoid range checks or one-shot null checks. Returns false if the 330 // current round of loop opts should stop. 331 bool iteration_split( PhaseIdealLoop *phase, Node_List &old_new ); 332 333 // Driver for various flavors of iteration splitting. Returns false 334 // if the current round of loop opts should stop. 335 bool iteration_split_impl( PhaseIdealLoop *phase, Node_List &old_new ); 336 337 // Given dominators, try to find loops with calls that must always be 338 // executed (call dominates loop tail). These loops do not need non-call 339 // safepoints (ncsfpt). 340 void check_safepts(VectorSet &visited, Node_List &stack); 341 342 // Allpaths backwards scan from loop tail, terminating each path at first safepoint 343 // encountered. 344 void allpaths_check_safepts(VectorSet &visited, Node_List &stack); 345 346 // Convert to counted loops where possible 347 void counted_loop( PhaseIdealLoop *phase ); 348 349 // Check for Node being a loop-breaking test 350 Node *is_loop_exit(Node *iff) const; 351 352 // Returns true if ctrl is executed on every complete iteration 353 bool dominates_backedge(Node* ctrl); 354 355 // Remove simplistic dead code from loop body |