< prev index next >

src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp

Print this page
rev 55444 : JDK-8226515

@@ -89,25 +89,28 @@
     __ mov(c_rarg0, dst);
   }
   __ mov(c_rarg1, rscratch2);
 
   int step = 4 * wordSize;
-  __ mov(rscratch1, -step);
+  __ mov(rscratch2, -step);
   __ sub(sp, sp, step);
 
   for (int i = 28; i >= 4; i -= 4) {
     __ st1(as_FloatRegister(i), as_FloatRegister(i+1), as_FloatRegister(i+2),
-        as_FloatRegister(i+3), __ T1D, Address(__ post(sp, rscratch1)));
+        as_FloatRegister(i+3), __ T1D, Address(__ post(sp, rscratch2)));
   }
+  __ st1(as_FloatRegister(0), as_FloatRegister(1), as_FloatRegister(2),
+      as_FloatRegister(3), __ T1D, Address(sp));
 
   __ call_VM_leaf(ZBarrierSetRuntime::load_barrier_on_oop_field_preloaded_addr(decorators), 2);
 
   for (int i = 0; i <= 28; i += 4) {
     __ ld1(as_FloatRegister(i), as_FloatRegister(i+1), as_FloatRegister(i+2),
         as_FloatRegister(i+3), __ T1D, Address(__ post(sp, step)));
   }
 
+
   // Make sure dst has the return value.
   if (dst != r0) {
     __ mov(dst, r0);
   }
 
< prev index next >