summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/k_slab_heap.h
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2022-11-21 17:31:18 +0100
committerLiam <byteslice@airmail.cc>2022-11-23 04:22:28 +0100
commit9737615948d431cf56826f3c109bbc0fef7b4d10 (patch)
tree9d4742bf8f2b64b9a5b30ae33b105a5e9344ab3b /src/core/hle/kernel/k_slab_heap.h
parentMerge pull request #9279 from liamwhite/this-would-have-never-happened-in-rust (diff)
downloadyuzu-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 'src/core/hle/kernel/k_slab_heap.h')
-rw-r--r--src/core/hle/kernel/k_slab_heap.h6
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: