src/share/vm/opto/parse2.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6710487 Cdiff src/share/vm/opto/parse2.cpp

src/share/vm/opto/parse2.cpp

Print this page

        

*** 65,80 **** const TypeAryPtr* arytype = _gvn.type(ary)->is_aryptr(); const TypeInt* sizetype = arytype->size(); 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) { 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()); elemtype = subklass->join(el); } --- 65,77 ---- const TypeAryPtr* arytype = _gvn.type(ary)->is_aryptr(); const TypeInt* sizetype = arytype->size(); const Type* elemtype = arytype->elem(); if (UseUniqueSubclasses && result2 != NULL) { ! 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()); elemtype = subklass->join(el); }
src/share/vm/opto/parse2.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File