< prev index next >
src/hotspot/share/opto/type.cpp
Print this page
*** 4620,4633 ****
if (tary->_elem->isa_valuetype()) {
// Result is flattened
off = Offset(elem()->isa_valuetype() ? offset() : tap->offset());
field_off = elem()->isa_valuetype() ? field_offset() : tap->field_offset();
} else if (tary->_elem->make_oopptr() != NULL && tary->_elem->make_oopptr()->isa_instptr() && below_centerline(ptr)) {
! // Result is non-flattened (fall back to object)
off = Offset(flattened_offset()).meet(Offset(tap->flattened_offset()));
field_off = Offset::bottom;
- tary = TypeAry::make(TypeInstPtr::BOTTOM, tary->_size, tary->_stable);
}
} else // Non integral arrays.
// Must fall to bottom if exact klasses in upper lattice
// are not equal or super klass is exact.
if ((above_centerline(ptr) || ptr == Constant) && klass() != tap->klass() &&
--- 4620,4632 ----
if (tary->_elem->isa_valuetype()) {
// Result is flattened
off = Offset(elem()->isa_valuetype() ? offset() : tap->offset());
field_off = elem()->isa_valuetype() ? field_offset() : tap->field_offset();
} else if (tary->_elem->make_oopptr() != NULL && tary->_elem->make_oopptr()->isa_instptr() && below_centerline(ptr)) {
! // Result is non-flattened
off = Offset(flattened_offset()).meet(Offset(tap->flattened_offset()));
field_off = Offset::bottom;
}
} else // Non integral arrays.
// Must fall to bottom if exact klasses in upper lattice
// are not equal or super klass is exact.
if ((above_centerline(ptr) || ptr == Constant) && klass() != tap->klass() &&
*** 5328,5338 ****
if (el->isa_instptr()) {
// Compute object array klass from element klass
bool null_free = el->is_valuetypeptr() && el->isa_instptr()->ptr() != TypePtr::TopPTR && !el->isa_instptr()->maybe_null();
k_ary = ciArrayKlass::make(el->is_oopptr()->klass(), null_free);
} else if (el->isa_valuetype()) {
! k_ary = ciArrayKlass::make(el->is_valuetype()->value_klass(), /* null_free */ true);
} else if ((tary = el->isa_aryptr()) != NULL) {
// Compute array klass from element klass
ciKlass* k_elem = tary->klass();
// If element type is something like bottom[], k_elem will be null.
if (k_elem != NULL)
--- 5327,5337 ----
if (el->isa_instptr()) {
// Compute object array klass from element klass
bool null_free = el->is_valuetypeptr() && el->isa_instptr()->ptr() != TypePtr::TopPTR && !el->isa_instptr()->maybe_null();
k_ary = ciArrayKlass::make(el->is_oopptr()->klass(), null_free);
} else if (el->isa_valuetype()) {
! k_ary = ciArrayKlass::make(el->value_klass(), /* null_free */ true);
} else if ((tary = el->isa_aryptr()) != NULL) {
// Compute array klass from element klass
ciKlass* k_elem = tary->klass();
// If element type is something like bottom[], k_elem will be null.
if (k_elem != NULL)
< prev index next >