463 for( uint i = 1; i < whead->req(); i++ ) { |
463 for( uint i = 1; i < whead->req(); i++ ) { |
464 if (!has_node(whead->in(i))) { |
464 if (!has_node(whead->in(i))) { |
465 // Kill dead input path |
465 // Kill dead input path |
466 assert( !visited.test(whead->in(i)->_idx), |
466 assert( !visited.test(whead->in(i)->_idx), |
467 "input with no loop must be dead" ); |
467 "input with no loop must be dead" ); |
468 _igvn.hash_delete(whead); |
468 _igvn.delete_input_of(whead, i); |
469 whead->del_req(i); |
|
470 _igvn._worklist.push(whead); |
|
471 for (DUIterator_Fast jmax, j = whead->fast_outs(jmax); j < jmax; j++) { |
469 for (DUIterator_Fast jmax, j = whead->fast_outs(jmax); j < jmax; j++) { |
472 Node* p = whead->fast_out(j); |
470 Node* p = whead->fast_out(j); |
473 if( p->is_Phi() ) { |
471 if( p->is_Phi() ) { |
474 _igvn.hash_delete(p); |
472 _igvn.delete_input_of(p, i); |
475 p->del_req(i); |
|
476 _igvn._worklist.push(p); |
|
477 } |
473 } |
478 } |
474 } |
479 i--; // Rerun same iteration |
475 i--; // Rerun same iteration |
480 } // End of if dead input path |
476 } // End of if dead input path |
481 } // End of for all input paths |
477 } // End of for all input paths |