@@ -367,7 +367,9 @@ Node* PhaseMacroExpand::make_arraycopy_load(ArrayCopyNode* ac, intptr_t offset,
367367 Node* base = ac->in (ArrayCopyNode::Src);
368368 Node* adr = _igvn.transform (new AddPNode (base, base, MakeConX (offset)));
369369 const TypePtr* adr_type = _igvn.type (base)->is_ptr ()->add_offset (offset);
370- res = LoadNode::make (_igvn, ctl, mem, adr, adr_type, type, bt, MemNode::unordered, LoadNode::UnknownControl);
370+ MergeMemNode* mergemen = MergeMemNode::make (mem);
371+ BarrierSetC2* bs = BarrierSet::barrier_set ()->barrier_set_c2 ();
372+ res = ArrayCopyNode::load (bs, &_igvn, ctl, mergemen, adr, adr_type, type, bt);
371373 } else {
372374 if (ac->modifies (offset, offset, &_igvn, true )) {
373375 assert (ac->in (ArrayCopyNode::Dest) == alloc->result_cast (), " arraycopy destination should be allocation's result" );
@@ -405,11 +407,12 @@ Node* PhaseMacroExpand::make_arraycopy_load(ArrayCopyNode* ac, intptr_t offset,
405407 return NULL ;
406408 }
407409 }
408- res = LoadNode::make (_igvn, ctl, mem, adr, adr_type, type, bt, MemNode::unordered, LoadNode::UnknownControl);
410+ MergeMemNode* mergemen = MergeMemNode::make (mem);
411+ BarrierSetC2* bs = BarrierSet::barrier_set ()->barrier_set_c2 ();
412+ res = ArrayCopyNode::load (bs, &_igvn, ctl, mergemen, adr, adr_type, type, bt);
409413 }
410414 }
411415 if (res != NULL ) {
412- res = _igvn.transform (res);
413416 if (ftype->isa_narrowoop ()) {
414417 // PhaseMacroExpand::scalar_replacement adds DecodeN nodes
415418 res = _igvn.transform (new EncodePNode (res, ftype));
0 commit comments