< 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 >