From c4fe5bf90c2d368c29714de63a90eca444fb3ece Mon Sep 17 00:00:00 2001 From: Aleksey Shipilev Date: Thu, 2 May 2024 08:26:09 +0000 Subject: [PATCH] 8331405: Shenandoah: Optimize ShenandoahLock with TTAS Reviewed-by: zgu, ysr --- src/hotspot/share/gc/shenandoah/shenandoahLock.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/hotspot/share/gc/shenandoah/shenandoahLock.cpp b/src/hotspot/share/gc/shenandoah/shenandoahLock.cpp index 39588d68bc8..349f5415cdc 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoahLock.cpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahLock.cpp @@ -54,7 +54,8 @@ template void ShenandoahLock::contended_lock_internal(JavaThread* java_thread) { int ctr = 0; int yields = 0; - while (Atomic::cmpxchg(&_state, unlocked, locked) != unlocked) { + while (Atomic::load(&_state) == locked || + Atomic::cmpxchg(&_state, unlocked, locked) != unlocked) { if ((++ctr & 0xFFF) == 0) { BlockOp block(java_thread); if (yields > 5) {