--- old/src/hotspot/share/gc/shenandoah/shenandoahSharedVariables.hpp 2019-11-21 11:57:42.911533573 +0100 +++ new/src/hotspot/share/gc/shenandoah/shenandoahSharedVariables.hpp 2019-11-21 11:57:42.443525668 +0100 @@ -74,7 +74,7 @@ if (is_set()) { return false; } - ShenandoahSharedValue old = Atomic::cmpxchg((ShenandoahSharedValue)SET, &value, (ShenandoahSharedValue)UNSET); + ShenandoahSharedValue old = Atomic::cmpxchg(&value, (ShenandoahSharedValue)UNSET, (ShenandoahSharedValue)SET); return old == UNSET; // success } @@ -82,7 +82,7 @@ if (!is_set()) { return false; } - ShenandoahSharedValue old = Atomic::cmpxchg((ShenandoahSharedValue)UNSET, &value, (ShenandoahSharedValue)SET); + ShenandoahSharedValue old = Atomic::cmpxchg(&value, (ShenandoahSharedValue)SET, (ShenandoahSharedValue)UNSET); return old == SET; // success } @@ -125,7 +125,7 @@ } ShenandoahSharedValue nv = ov | mask_val; - if (Atomic::cmpxchg(nv, &value, ov) == ov) { + if (Atomic::cmpxchg(&value, ov, nv) == ov) { // successfully set return; } @@ -143,7 +143,7 @@ } ShenandoahSharedValue nv = ov & ~mask_val; - if (Atomic::cmpxchg(nv, &value, ov) == ov) { + if (Atomic::cmpxchg(&value, ov, nv) == ov) { // successfully unset return; } @@ -221,7 +221,7 @@ T cmpxchg(T new_value, T expected) { assert (new_value >= 0, "sanity"); assert (new_value < (sizeof(ShenandoahSharedValue) * CHAR_MAX), "sanity"); - return (T)Atomic::cmpxchg((ShenandoahSharedValue)new_value, &value, (ShenandoahSharedValue)expected); + return (T)Atomic::cmpxchg(&value, (ShenandoahSharedValue)expected, (ShenandoahSharedValue)new_value); } volatile ShenandoahSharedValue* addr_of() {