< prev index next >
src/hotspot/share/opto/arraycopynode.cpp
Print this page
*** 188,198 ****
type = TypeInstPtr::BOTTOM;
} else {
ciType* field_klass = field->type();
type = TypeOopPtr::make_from_klass(field_klass->as_klass());
}
! if (UseLoadBarrier) {
if (can_reshape) {
PhaseIterGVN* igvn = phase->is_IterGVN();
igvn->_worklist.push(mem);
}
return NodeSentinel;
--- 188,198 ----
type = TypeInstPtr::BOTTOM;
} else {
ciType* field_klass = field->type();
type = TypeOopPtr::make_from_klass(field_klass->as_klass());
}
! if (UseZGC) {
if (can_reshape) {
PhaseIterGVN* igvn = phase->is_IterGVN();
igvn->_worklist.push(mem);
}
return NodeSentinel;
*** 268,278 ****
// It's an object array copy but we can't emit the card marking
// that is needed
return false;
}
! if (dest_elem == T_OBJECT && UseLoadBarrier) {
return false;
}
value_type = ary_src->elem();
--- 268,278 ----
// It's an object array copy but we can't emit the card marking
// that is needed
return false;
}
! if (dest_elem == T_OBJECT && UseZGC) {
return false;
}
value_type = ary_src->elem();
*** 315,325 ****
assert(phase->type(src->in(AddPNode::Offset))->is_intptr_t()->get_con() == phase->type(dest->in(AddPNode::Offset))->is_intptr_t()->get_con(), "same start offset?");
BasicType elem = ary_src->klass()->as_array_klass()->element_type()->basic_type();
if (elem == T_ARRAY) elem = T_OBJECT;
! if (elem == T_OBJECT && UseLoadBarrier) {
return false;
}
int diff = arrayOopDesc::base_offset_in_bytes(elem) - phase->type(src->in(AddPNode::Offset))->is_intptr_t()->get_con();
assert(diff >= 0, "clone should not start after 1st array element");
--- 315,325 ----
assert(phase->type(src->in(AddPNode::Offset))->is_intptr_t()->get_con() == phase->type(dest->in(AddPNode::Offset))->is_intptr_t()->get_con(), "same start offset?");
BasicType elem = ary_src->klass()->as_array_klass()->element_type()->basic_type();
if (elem == T_ARRAY) elem = T_OBJECT;
! if (elem == T_OBJECT && UseZGC) {
return false;
}
int diff = arrayOopDesc::base_offset_in_bytes(elem) - phase->type(src->in(AddPNode::Offset))->is_intptr_t()->get_con();
assert(diff >= 0, "clone should not start after 1st array element");
*** 374,384 ****
Node* adr_dest,
Node* base_dest,
BasicType copy_type,
const Type* value_type,
int count) {
! guarantee(!UseLoadBarrier || copy_type != T_OBJECT, "Must be");
Node* mem = phase->C->top();
if (!forward_ctl->is_top()) {
// copy forward
mem = start_mem_dest;
--- 374,384 ----
Node* adr_dest,
Node* base_dest,
BasicType copy_type,
const Type* value_type,
int count) {
! guarantee(!UseZGC || copy_type != T_OBJECT, "Must be");
Node* mem = phase->C->top();
if (!forward_ctl->is_top()) {
// copy forward
mem = start_mem_dest;
*** 417,427 ****
Node* adr_dest,
Node* base_dest,
BasicType copy_type,
const Type* value_type,
int count) {
! guarantee(!UseLoadBarrier || copy_type != T_OBJECT, "Must be");
Node* mem = phase->C->top();
if (!backward_ctl->is_top()) {
// copy backward
mem = start_mem_dest;
--- 417,427 ----
Node* adr_dest,
Node* base_dest,
BasicType copy_type,
const Type* value_type,
int count) {
! guarantee(!UseZGC || copy_type != T_OBJECT, "Must be");
Node* mem = phase->C->top();
if (!backward_ctl->is_top()) {
// copy backward
mem = start_mem_dest;
< prev index next >