comparison src/share/vm/opto/phaseX.cpp @ 927:662f330d7275

6866651: Regression: simple int sum crashes jvm (build 1.6.0_14-b08 and 1.7.0-ea-b59) Summary: delay dead code elimination in set_req_X to make it safe Reviewed-by: kvn, never
author cfang
date Mon, 17 Aug 2009 12:11:06 -0700
parents 98cb887364d3
children 89e0543e1737 03b336640699
comparison
equal deleted inserted replaced
926:c8e2135f7e30 927:662f330d7275
1620 set_req(i, n); 1620 set_req(i, n);
1621 1621
1622 // old goes dead? 1622 // old goes dead?
1623 if( old ) { 1623 if( old ) {
1624 switch (old->outcnt()) { 1624 switch (old->outcnt()) {
1625 case 0: // Kill all his inputs, and recursively kill other dead nodes. 1625 case 0:
1626 // Put into the worklist to kill later. We do not kill it now because the
1627 // recursive kill will delete the current node (this) if dead-loop exists
1626 if (!old->is_top()) 1628 if (!old->is_top())
1627 igvn->remove_dead_node( old ); 1629 igvn->_worklist.push( old );
1628 break; 1630 break;
1629 case 1: 1631 case 1:
1630 if( old->is_Store() || old->has_special_unique_user() ) 1632 if( old->is_Store() || old->has_special_unique_user() )
1631 igvn->add_users_to_worklist( old ); 1633 igvn->add_users_to_worklist( old );
1632 break; 1634 break;