--- old/src/share/vm/opto/arraycopynode.cpp 2015-03-02 11:03:10.023121477 +0100 +++ new/src/share/vm/opto/arraycopynode.cpp 2015-03-02 11:03:09.863250274 +0100 @@ -145,7 +145,6 @@ Node* in_mem = in(TypeFunc::Memory); const Type* src_type = phase->type(src); - const Type* dest_type = phase->type(dest); assert(src->is_AddP(), "should be base + off"); assert(dest->is_AddP(), "should be base + off"); @@ -483,7 +482,9 @@ return NULL; } - if (in(TypeFunc::Control)->is_top() || in(TypeFunc::Memory)->is_top()) { + if (in(TypeFunc::Control)->is_top() || in(TypeFunc::Memory)->is_top() || + phase->type(in(ArrayCopyNode::Src)) == Type::TOP || + phase->type(in(ArrayCopyNode::Dest)) == Type::TOP) { return NULL; }