< prev index next >

src/share/vm/oops/objArrayKlass.cpp

Print this page
rev 8961 : [mq]: diff-shenandoah.patch

@@ -296,10 +296,14 @@
   // This is correct, since the position is supposed to be an 'in between point', i.e., s.length(),
   // points to the right of the last element.
   if (length==0) {
     return;
   }
+
+  s = arrayOop(oopDesc::bs()->resolve_oop(s));
+  d = arrayOop(oopDesc::bs()->resolve_and_maybe_copy_oop(d));
+
   if (UseCompressedOops) {
     narrowOop* const src = objArrayOop(s)->obj_at_addr<narrowOop>(src_pos);
     narrowOop* const dst = objArrayOop(d)->obj_at_addr<narrowOop>(dst_pos);
     do_copy<narrowOop>(s, src, d, dst, length, CHECK);
   } else {
< prev index next >