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