--- old/src/share/vm/opto/parse2.cpp 2014-11-17 10:49:42.681264221 -0500 +++ new/src/share/vm/opto/parse2.cpp 2014-11-17 10:49:42.461284235 -0500 @@ -1689,7 +1689,8 @@ a = pop(); // the array itself const TypeOopPtr* elemtype = _gvn.type(a)->is_aryptr()->elem()->make_oopptr(); const TypeAryPtr* adr_type = TypeAryPtr::OOPS; - Node* store = store_oop_to_array(control(), a, d, adr_type, c, elemtype, T_OBJECT, MemNode::release); + Node* store = store_oop_to_array(control(), a, d, adr_type, c, elemtype, T_OBJECT, + StoreNode::release_if_reference(T_OBJECT)); break; } case Bytecodes::_lastore: {