[11u] RFR: Fix non-Shenandoah builds

Aleksey Shipilev shade at redhat.com
Fri Jul 19 17:35:59 UTC 2019


On 7/19/19 5:36 PM, Roman Kennke wrote:
> I am not sure that the fix is quite right. We do want to exclude this
> stuff from non-Shenandoah builds methinks. Maybe just move the whole
> block up a little, so that the trailing || here:
> 
>>               (bol->in(1)->Opcode() == Op_CompareAndSwapN ) ||
> 
> ... doesn't end up being the last one?

Well, I liked the first fix because it matched what jdk/jdk was doing.

We can do this:

diff -r 59cfe2c1b7ba src/hotspot/share/opto/loopTransform.cpp
--- a/src/hotspot/share/opto/loopTransform.cpp  Fri Jul 19 17:23:26 2019 +0200
+++ b/src/hotspot/share/opto/loopTransform.cpp  Fri Jul 19 19:34:14 2019 +0200
@@ -2779,4 +2779,12 @@
              (bol->in(1)->Opcode() == Op_StoreIConditional ) ||
              (bol->in(1)->Opcode() == Op_StoreLConditional ) ||
+#if INCLUDE_SHENANDOAHGC
+             (bol->in(1)->Opcode() == Op_ShenandoahCompareAndExchangeP ) ||
+             (bol->in(1)->Opcode() == Op_ShenandoahCompareAndExchangeN ) ||
+             (bol->in(1)->Opcode() == Op_ShenandoahWeakCompareAndSwapP ) ||
+             (bol->in(1)->Opcode() == Op_ShenandoahWeakCompareAndSwapN ) ||
+             (bol->in(1)->Opcode() == Op_ShenandoahCompareAndSwapP ) ||
+             (bol->in(1)->Opcode() == Op_ShenandoahCompareAndSwapN ) ||
+#endif
              (bol->in(1)->Opcode() == Op_CompareAndExchangeB ) ||
              (bol->in(1)->Opcode() == Op_CompareAndExchangeS ) ||
@@ -2796,12 +2804,5 @@
              (bol->in(1)->Opcode() == Op_CompareAndSwapL ) ||
              (bol->in(1)->Opcode() == Op_CompareAndSwapP ) ||
-             (bol->in(1)->Opcode() == Op_CompareAndSwapN ) ||
-             (bol->in(1)->Opcode() == Op_ShenandoahCompareAndExchangeP ) ||
-             (bol->in(1)->Opcode() == Op_ShenandoahCompareAndExchangeN ) ||
-             (bol->in(1)->Opcode() == Op_ShenandoahWeakCompareAndSwapP ) ||
-             (bol->in(1)->Opcode() == Op_ShenandoahWeakCompareAndSwapN ) ||
-             (bol->in(1)->Opcode() == Op_ShenandoahCompareAndSwapP ) ||
-             (bol->in(1)->Opcode() == Op_ShenandoahCompareAndSwapN )
-             ))
+             (bol->in(1)->Opcode() == Op_CompareAndSwapN )))
           return;               // Allocation loops RARELY take backedge
         // Find the OTHER exit path from the IF

-Aleksey



More information about the shenandoah-dev mailing list