src/share/vm/opto/macro.cpp

changeset 3398
9c87bcb3b4dd
parent 3396
d12a66fa3820
child 3406
e9a5e0a812c8
equal deleted inserted replaced
3397:8940fd98d540 3398: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) {

mercurial