diff options
author | Liam <byteslice@airmail.cc> | 2022-11-21 17:31:18 +0100 |
---|---|---|
committer | Liam <byteslice@airmail.cc> | 2022-11-23 04:22:28 +0100 |
commit | 9737615948d431cf56826f3c109bbc0fef7b4d10 (patch) | |
tree | 9d4742bf8f2b64b9a5b30ae33b105a5e9344ab3b /src/core/hle/kernel/k_slab_heap.h | |
parent | Merge pull request #9279 from liamwhite/this-would-have-never-happened-in-rust (diff) | |
download | yuzu-9737615948d431cf56826f3c109bbc0fef7b4d10.tar yuzu-9737615948d431cf56826f3c109bbc0fef7b4d10.tar.gz yuzu-9737615948d431cf56826f3c109bbc0fef7b4d10.tar.bz2 yuzu-9737615948d431cf56826f3c109bbc0fef7b4d10.tar.lz yuzu-9737615948d431cf56826f3c109bbc0fef7b4d10.tar.xz yuzu-9737615948d431cf56826f3c109bbc0fef7b4d10.tar.zst yuzu-9737615948d431cf56826f3c109bbc0fef7b4d10.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/kernel/k_slab_heap.h | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/core/hle/kernel/k_slab_heap.h b/src/core/hle/kernel/k_slab_heap.h index a8c77a7d4..68469b041 100644 --- a/src/core/hle/kernel/k_slab_heap.h +++ b/src/core/hle/kernel/k_slab_heap.h @@ -6,6 +6,7 @@ #include <atomic> #include "common/assert.h" +#include "common/atomic_ops.h" #include "common/common_funcs.h" #include "common/common_types.h" #include "common/spin_lock.h" @@ -82,16 +83,13 @@ private: private: void UpdatePeakImpl(uintptr_t obj) { - static_assert(std::atomic_ref<uintptr_t>::is_always_lock_free); - std::atomic_ref<uintptr_t> peak_ref(m_peak); - const uintptr_t alloc_peak = obj + this->GetObjectSize(); uintptr_t cur_peak = m_peak; do { if (alloc_peak <= cur_peak) { break; } - } while (!peak_ref.compare_exchange_strong(cur_peak, alloc_peak)); + } while (!Common::AtomicCompareAndSwap(&m_peak, alloc_peak, cur_peak, cur_peak)); } public: |