RFR: Fix limited x86_32 support

Aleksey Shipilev shade at redhat.com
Sun Sep 16 16:10:11 UTC 2018


Shenandoah is able to run on x86_32 in passive mode. That is, before it was
broken with recent CAS refactoring. Fixed like this:

--- a/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetC1_x86.cpp
+++ b/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetC1_x86.cpp
@@ -51,5 +51,5 @@
 LIR_Opr ShenandoahBarrierSetC1::atomic_cmpxchg_at_resolved(LIRAccess& access,
LIRItem& cmp_value, LIRItem& new_value) {
   BasicType bt = access.type();
-  if (bt == T_OBJECT || bt == T_ARRAY) {
+  if (ShenandoahCASBarrier && (bt == T_OBJECT || bt == T_ARRAY)) {
     LIRGenerator *gen = access.gen();
     cmp_value.load_item_force(FrameMap::rax_oop_opr);

Testing: adhoc x86_32 runs

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list