< prev index next >

src/hotspot/share/c1/c1_Runtime1.cpp

Print this page
rev 49182 : 8198445: Access API for primitive/native arraycopy

@@ -1406,12 +1406,11 @@
     const int ihs = klass->array_header_in_bytes() / wordSize;
     char* src_addr = (char*) ((oopDesc**)src + ihs) + (src_pos << l2es);
     char* dst_addr = (char*) ((oopDesc**)dst + ihs) + (dst_pos << l2es);
     // Potential problem: memmove is not guaranteed to be word atomic
     // Revisit in Merlin
-    memmove(dst_addr, src_addr, length << l2es);
-    return ac_ok;
+    return HeapAccess<>::arraycopy(arrayOop(src), arrayOop(dst), src_addr, dst_addr, length << l2es) ? ac_ok : ac_failed;
   } else if (src->is_objArray() && dst->is_objArray()) {
     if (UseCompressedOops) {
       narrowOop *src_addr  = objArrayOop(src)->obj_at_addr<narrowOop>(src_pos);
       narrowOop *dst_addr  = objArrayOop(dst)->obj_at_addr<narrowOop>(dst_pos);
       return obj_arraycopy_work(src, src_addr, dst, dst_addr, length);
< prev index next >