< prev index next >
src/hotspot/share/opto/escape.cpp
Print this page
*** 991,1001 ****
bool arg_has_oops = aat->isa_oopptr() &&
(aat->isa_oopptr()->klass() == NULL || aat->isa_instptr() ||
(aat->isa_aryptr() && aat->isa_aryptr()->klass()->is_obj_array_klass()) ||
(aat->isa_aryptr() && aat->isa_aryptr()->elem() != NULL &&
aat->isa_aryptr()->elem()->isa_valuetype() &&
! aat->isa_aryptr()->elem()->isa_valuetype()->value_klass()->contains_oops()));
if (i == TypeFunc::Parms) {
src_has_oops = arg_has_oops;
}
//
// src or dst could be j.l.Object when other is basic type array:
--- 991,1001 ----
bool arg_has_oops = aat->isa_oopptr() &&
(aat->isa_oopptr()->klass() == NULL || aat->isa_instptr() ||
(aat->isa_aryptr() && aat->isa_aryptr()->klass()->is_obj_array_klass()) ||
(aat->isa_aryptr() && aat->isa_aryptr()->elem() != NULL &&
aat->isa_aryptr()->elem()->isa_valuetype() &&
! aat->isa_aryptr()->elem()->value_klass()->contains_oops()));
if (i == TypeFunc::Parms) {
src_has_oops = arg_has_oops;
}
//
// src or dst could be j.l.Object when other is basic type array:
*** 2129,2139 ****
} else if (find_second_addp(n, n->in(AddPNode::Base)) != NULL) {
// Ignore first AddP.
} else {
const Type* elemtype = adr_type->isa_aryptr()->elem();
if (elemtype->isa_valuetype() && field_offset != Type::OffsetBot) {
! ciValueKlass* vk = elemtype->is_valuetype()->value_klass();
field_offset += vk->first_field_offset();
bt = vk->get_field_by_offset(field_offset, false)->layout_type();
} else {
bt = elemtype->array_element_basic_type();
}
--- 2129,2139 ----
} else if (find_second_addp(n, n->in(AddPNode::Base)) != NULL) {
// Ignore first AddP.
} else {
const Type* elemtype = adr_type->isa_aryptr()->elem();
if (elemtype->isa_valuetype() && field_offset != Type::OffsetBot) {
! ciValueKlass* vk = elemtype->value_klass();
field_offset += vk->first_field_offset();
bt = vk->get_field_by_offset(field_offset, false)->layout_type();
} else {
bt = elemtype->array_element_basic_type();
}
< prev index next >