diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-09-07 16:50:03 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-07 16:50:03 -0700 |
commit | 87f65f1623983bfc516ff4b222a3bb2537971837 (patch) | |
tree | e0f64742eac547534e4e9b82f12a7c02202fb3ea /src/support/threads.h | |
parent | 135a20cd110d356d5d098a08a7b447205adaed7a (diff) | |
parent | c24b9f9f6af61abd9ef124837bee41cbba35a8f2 (diff) | |
download | binaryen-87f65f1623983bfc516ff4b222a3bb2537971837.tar.gz binaryen-87f65f1623983bfc516ff4b222a3bb2537971837.tar.bz2 binaryen-87f65f1623983bfc516ff4b222a3bb2537971837.zip |
Merge pull request #694 from WebAssembly/binary-order-fix
Ordering bug fixes for windows
Diffstat (limited to 'src/support/threads.h')
-rw-r--r-- | src/support/threads.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/support/threads.h b/src/support/threads.h index ea9e53c13..45c09e602 100644 --- a/src/support/threads.h +++ b/src/support/threads.h @@ -105,6 +105,24 @@ private: bool areThreadsReady(); }; +// Verify a code segment is only entered once. Usage: +// static OnlyOnce onlyOnce; +// onlyOnce.verify(); + +class OnlyOnce { + std::atomic<int> created; + +public: + OnlyOnce() { + created.store(0); + } + + void verify() { + auto before = created.fetch_add(1); + assert(before == 0); + } +}; + } // namespace wasm #endif // wasm_support_threads_h |