From a9ea7ec1c99f34beb49a4939f75cde069211bf73 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Sun, 1 Feb 2026 18:57:49 +0100 Subject: [PATCH] Workaround libc++ issues. --- profiler/src/EmscriptenShim.hpp | 29 +++++++++++++++++++++++++++++ profiler/src/main.cpp | 1 + 2 files changed, 30 insertions(+) create mode 100644 profiler/src/EmscriptenShim.hpp diff --git a/profiler/src/EmscriptenShim.hpp b/profiler/src/EmscriptenShim.hpp new file mode 100644 index 00000000..5731749c --- /dev/null +++ b/profiler/src/EmscriptenShim.hpp @@ -0,0 +1,29 @@ +#ifndef __EMSCRIPTENSHIM_HPP__ +#define __EMSCRIPTENSHIM_HPP__ + +#ifdef __EMSCRIPTEN__ + +namespace std { + +template +struct atomic> { + shared_ptr value; + + bool compare_exchange_weak(shared_ptr& expected, const shared_ptr& desired) noexcept { + return atomic_compare_exchange_weak_explicit(&value, &expected, &desired, std::memory_order_acq_rel, std::memory_order_acquire); + } + + shared_ptr load(memory_order order = std::memory_order_seq_cst) const noexcept { + return atomic_load_explicit(&value, order); + } + + void store(shared_ptr desired, memory_order order = std::memory_order_seq_cst) noexcept { + atomic_store_explicit(&value, desired, order); + } +}; + +} // namespace std + +#endif + +#endif diff --git a/profiler/src/main.cpp b/profiler/src/main.cpp index dca06f5c..11e0d659 100644 --- a/profiler/src/main.cpp +++ b/profiler/src/main.cpp @@ -58,6 +58,7 @@ #include "Backend.hpp" #include "ConnectionHistory.hpp" +#include "EmscriptenShim.hpp" #include "Filters.hpp" #include "Fonts.hpp" #include "HttpRequest.hpp"