Mercurial > hg > truffle
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) { |