RFR: AArch64 shenandoah_store_check should read evacuation_in_progress as byte

Aleksey Shipilev shade at redhat.com
Mon Oct 2 11:14:13 UTC 2017


Blind fix for aarch64. evacuation_in_progress is jbyte, and should be read as byte:

------------- 8< -----------------------------------------------------------------------
diff -r ea6691150c62 src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
--- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp	Mon Oct 02 13:09:09 2017 +0200
+++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp	Mon Oct 02 13:11:53 2017 +0200
@@ -5655,8 +5655,8 @@
   // because it will also capture the errors in thread-local flags that may break the
   // write barrier.
   mov(tmp1, ShenandoahHeap::evacuation_in_progress_addr());
-  ldrw(tmp1, Address(tmp1));
-  cbnzw(tmp1, done);
+  ldrb(tmp1, Address(tmp1));
+  cbnz(tmp1, done);

   // Null-check value.
   cbz(rval, done);
------------- 8< -----------------------------------------------------------------------

Cannot test, because have no AArch64 machine handy.

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list