diff -r 30369db7f5d2 -r 1e026f8da827 src/share/vm/opto/parse2.cpp --- a/src/share/vm/opto/parse2.cpp Mon Jun 23 18:21:18 2008 -0700 +++ b/src/share/vm/opto/parse2.cpp Tue Jun 24 10:43:29 2008 -0700 @@ -67,12 +67,9 @@ const Type* elemtype = arytype->elem(); if (UseUniqueSubclasses && result2 != NULL) { - const Type* el = elemtype; - if (elemtype->isa_narrowoop()) { - el = elemtype->is_narrowoop()->make_oopptr(); - } - const TypeInstPtr* toop = el->isa_instptr(); - if (toop) { + const Type* el = elemtype->make_ptr(); + if (el && el->isa_instptr()) { + const TypeInstPtr* toop = el->is_instptr(); if (toop->klass()->as_instance_klass()->unique_concrete_subklass()) { // If we load from "AbstractClass[]" we must see "ConcreteSubClass". const Type* subklass = Type::get_const_type(toop->klass());