--- old/src/share/vm/opto/arraycopynode.cpp 2015-06-09 15:16:37.912307022 +0200 +++ new/src/share/vm/opto/arraycopynode.cpp 2015-06-09 15:16:37.057761454 +0200 @@ -438,11 +438,17 @@ // replace fallthrough projections of the ArrayCopyNode by the // new memory, control and the input IO. CallProjections callprojs; - extract_projections(&callprojs, true); + extract_projections(&callprojs, true, false); - igvn->replace_node(callprojs.fallthrough_ioproj, in(TypeFunc::I_O)); - igvn->replace_node(callprojs.fallthrough_memproj, mem); - igvn->replace_node(callprojs.fallthrough_catchproj, ctl); + if (callprojs.fallthrough_ioproj != NULL) { + igvn->replace_node(callprojs.fallthrough_ioproj, in(TypeFunc::I_O)); + } + if (callprojs.fallthrough_memproj != NULL) { + igvn->replace_node(callprojs.fallthrough_memproj, mem); + } + if (callprojs.fallthrough_catchproj != NULL) { + igvn->replace_node(callprojs.fallthrough_catchproj, ctl); + } // The ArrayCopyNode is not disconnected. It still has the // projections for the exception case. Replace current