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) { |