summaryrefslogtreecommitdiff
path: root/src/support/threads.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-09-07 16:50:03 -0700
committerGitHub <noreply@github.com>2016-09-07 16:50:03 -0700
commit87f65f1623983bfc516ff4b222a3bb2537971837 (patch)
treee0f64742eac547534e4e9b82f12a7c02202fb3ea /src/support/threads.h
parent135a20cd110d356d5d098a08a7b447205adaed7a (diff)
parentc24b9f9f6af61abd9ef124837bee41cbba35a8f2 (diff)
downloadbinaryen-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.h18
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