comparison src/share/vm/opto/macro.cpp @ 4769:9c87bcb3b4dd

7125879: assert(proj != NULL) failed: must be found Summary: Leave i_o attached to slow allocation call when there are no i_o users after the call. Reviewed-by: iveresov, twisti
author kvn
date Fri, 30 Dec 2011 11:43:06 -0800
parents d12a66fa3820
children e9a5e0a812c8
comparison
equal deleted inserted replaced
4768:8940fd98d540 4769:9c87bcb3b4dd
1501 } 1501 }
1502 1502
1503 // if we generated only a slow call, we are done 1503 // if we generated only a slow call, we are done
1504 if (always_slow) { 1504 if (always_slow) {
1505 // Now we can unhook i_o. 1505 // Now we can unhook i_o.
1506 call->set_req(TypeFunc::I_O, top()); 1506 if (result_phi_i_o->outcnt() > 1) {
1507 if (result_phi_i_o->outcnt() == 0) 1507 call->set_req(TypeFunc::I_O, top());
1508 _igvn.remove_dead_node(result_phi_i_o); 1508 } else {
1509 assert(result_phi_i_o->unique_ctrl_out() == call, "");
1510 // Case of new array with negative size known during compilation.
1511 // AllocateArrayNode::Ideal() optimization disconnect unreachable
1512 // following code since call to runtime will throw exception.
1513 // As result there will be no users of i_o after the call.
1514 // Leave i_o attached to this call to avoid problems in preceding graph.
1515 }
1509 return; 1516 return;
1510 } 1517 }
1511 1518
1512 1519
1513 if (_fallthroughcatchproj != NULL) { 1520 if (_fallthroughcatchproj != NULL) {