44 // Chains of copies cannot be deep. |
44 // Chains of copies cannot be deep. |
45 // 5008997 - This is wishful thinking. Register allocator seems to |
45 // 5008997 - This is wishful thinking. Register allocator seems to |
46 // be splitting live ranges for callee save registers to such |
46 // be splitting live ranges for callee save registers to such |
47 // an extent that in large methods the chains can be very long |
47 // an extent that in large methods the chains can be very long |
48 // (50+). The conservative answer is to return true if we don't |
48 // (50+). The conservative answer is to return true if we don't |
49 // know as this prevents optimizations from occuring. |
49 // know as this prevents optimizations from occurring. |
50 |
50 |
51 const int limit = 60; |
51 const int limit = 60; |
52 int i; |
52 int i; |
53 for( i=0; i < limit; i++ ) { |
53 for( i=0; i < limit; i++ ) { |
54 if( def->is_Proj() && def->in(0)->is_Start() && |
54 if( def->is_Proj() && def->in(0)->is_Start() && |
284 // Since they are equivalent the second one if redundant and can |
284 // Since they are equivalent the second one if redundant and can |
285 // be removed. |
285 // be removed. |
286 // |
286 // |
287 // n will be replaced with the old value but n might have |
287 // n will be replaced with the old value but n might have |
288 // kills projections associated with it so remove them now so that |
288 // kills projections associated with it so remove them now so that |
289 // yank_if_dead will be able to elminate the copy once the uses |
289 // yank_if_dead will be able to eliminate the copy once the uses |
290 // have been transferred to the old[value]. |
290 // have been transferred to the old[value]. |
291 for (DUIterator_Fast imax, i = n->fast_outs(imax); i < imax; i++) { |
291 for (DUIterator_Fast imax, i = n->fast_outs(imax); i < imax; i++) { |
292 Node* use = n->fast_out(i); |
292 Node* use = n->fast_out(i); |
293 if (use->is_Proj() && use->outcnt() == 0) { |
293 if (use->is_Proj() && use->outcnt() == 0) { |
294 // Kill projections have no users and one input |
294 // Kill projections have no users and one input |