comparison src/share/vm/opto/loopopts.cpp @ 367:194b8e3a2fc4

6384206: Phis which are later unneeded are impairing our ability to inline based on static types Reviewed-by: rasbold, jrose
author never
date Wed, 17 Sep 2008 12:59:52 -0700
parents 60bc5071073f
children ee8f06bfb27c
comparison
equal deleted inserted replaced
366:8261ee795323 367:194b8e3a2fc4
2665 // trip-counter on the fall-out path (forces the pre-incremented 2665 // trip-counter on the fall-out path (forces the pre-incremented
2666 // and post-incremented trip counter to be live at the same time). 2666 // and post-incremented trip counter to be live at the same time).
2667 // Fix this by adjusting to use the post-increment trip counter. 2667 // Fix this by adjusting to use the post-increment trip counter.
2668 Node *phi = cl->phi(); 2668 Node *phi = cl->phi();
2669 if( !phi ) return; // Dead infinite loop 2669 if( !phi ) return; // Dead infinite loop
2670
2671 // Shape messed up, probably by iteration_split_impl
2672 if (phi->in(LoopNode::LoopBackControl) != cl->incr()) return;
2673
2670 bool progress = true; 2674 bool progress = true;
2671 while (progress) { 2675 while (progress) {
2672 progress = false; 2676 progress = false;
2673 for (DUIterator_Fast imax, i = phi->fast_outs(imax); i < imax; i++) { 2677 for (DUIterator_Fast imax, i = phi->fast_outs(imax); i < imax; i++) {
2674 Node* use = phi->fast_out(i); // User of trip-counter 2678 Node* use = phi->fast_out(i); // User of trip-counter