Mercurial > hg > truffle
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 |