8331405: Shenandoah: Optimize ShenandoahLock with TTAS

Reviewed-by: zgu, ysr
This commit is contained in:
Aleksey Shipilev 2024-05-02 08:26:09 +00:00
parent dd906ffdcb
commit c4fe5bf90c

@ -54,7 +54,8 @@ template<typename BlockOp>
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) {