hotspot/src/share/vm/opto/macroArrayCopy.cpp
changeset 36342 7e8c466d9ffe
parent 35548 8d3afe96ffea
child 38675 066fcb1eb80a
--- a/hotspot/src/share/vm/opto/macroArrayCopy.cpp	Fri Feb 19 17:12:14 2016 +0800
+++ b/hotspot/src/share/vm/opto/macroArrayCopy.cpp	Tue Mar 01 20:06:47 2016 +0300
@@ -880,8 +880,14 @@
       Node* sptr = basic_plus_adr(src,  src_off);
       Node* dptr = basic_plus_adr(dest, dest_off);
       uint alias_idx = C->get_alias_index(adr_type);
-      Node* sval = transform_later(LoadNode::make(_igvn, *ctrl, (*mem)->memory_at(alias_idx), sptr, adr_type, TypeInt::INT, T_INT, MemNode::unordered));
-      Node* st = transform_later(StoreNode::make(_igvn, *ctrl, (*mem)->memory_at(alias_idx), dptr, adr_type, sval, T_INT, MemNode::unordered));
+      bool is_mismatched = (basic_elem_type != T_INT);
+      Node* sval = transform_later(
+          LoadNode::make(_igvn, *ctrl, (*mem)->memory_at(alias_idx), sptr, adr_type,
+                         TypeInt::INT, T_INT, MemNode::unordered, LoadNode::DependsOnlyOnTest,
+                         false /*unaligned*/, is_mismatched));
+      Node* st = transform_later(
+          StoreNode::make(_igvn, *ctrl, (*mem)->memory_at(alias_idx), dptr, adr_type,
+                          sval, T_INT, MemNode::unordered));
       (*mem)->set_memory_at(alias_idx, st);
       src_off += BytesPerInt;
       dest_off += BytesPerInt;