diff -r 18a08a7e16b5 -r 8f5825e0aeaa src/share/vm/opto/parse2.cpp --- a/src/share/vm/opto/parse2.cpp Fri Jun 26 07:26:10 2009 -0700 +++ b/src/share/vm/opto/parse2.cpp Fri Jun 26 13:03:29 2009 -0700 @@ -1565,7 +1565,7 @@ c = pop(); // Oop to store b = pop(); // index (already used) a = pop(); // the array itself - const Type* elemtype = _gvn.type(a)->is_aryptr()->elem(); + const TypeOopPtr* elemtype = _gvn.type(a)->is_aryptr()->elem()->is_oopptr(); const TypeAryPtr* adr_type = TypeAryPtr::OOPS; Node* store = store_oop_to_array(control(), a, d, adr_type, c, elemtype, T_OBJECT); break;