From 5fe6c13e5b32fc63a027a79e0d5154481e5cfa24 Mon Sep 17 00:00:00 2001 From: Muhammad Zahalqa Date: Thu, 6 Aug 2020 18:50:25 +0300 Subject: [PATCH] LibThread: Remove redundant r/w of atomic variable in Lock::lock() (#3013) m_holder.compare_exchange_strong(expected, desired, ...) will either successfully update the value to desired if == expected or put the current value in expected otherwise. --- Libraries/LibThread/Lock.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Libraries/LibThread/Lock.h b/Libraries/LibThread/Lock.h index def18517ab..02c97a382f 100644 --- a/Libraries/LibThread/Lock.h +++ b/Libraries/LibThread/Lock.h @@ -72,12 +72,11 @@ ALWAYS_INLINE void Lock::lock() } for (;;) { int expected = 0; - if (m_holder.compare_exchange_strong(expected, tid, AK::memory_order_acq_rel)) { - m_holder = tid; + if (m_holder.compare_exchange_strong(expected, tid, AK::memory_order_acq_rel)) { m_level = 1; return; } - donate(m_holder); + donate(expected); } }