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