summaryrefslogtreecommitdiff
path: root/src/wasm.h
diff options
context:
space:
mode:
authorDerek Schuff <dschuff@chromium.org>2017-08-24 12:43:12 -0700
committerGitHub <noreply@github.com>2017-08-24 12:43:12 -0700
commite60fcd0ba97ed75440c6f838619455be7a5e90a3 (patch)
treedbf187ed1eefcc9e16d5f5fac4be38b3fb539f94 /src/wasm.h
parentb07fafcebebab82dba46012256edc6445862cfce (diff)
downloadbinaryen-e60fcd0ba97ed75440c6f838619455be7a5e90a3.tar.gz
binaryen-e60fcd0ba97ed75440c6f838619455be7a5e90a3.tar.bz2
binaryen-e60fcd0ba97ed75440c6f838619455be7a5e90a3.zip
Add support for atomic wait and wake operators (#1140)
According to spec at https://github.com/WebAssembly/threads/blob/master/proposals/threads/Overview.md#wait-and-wake-operators
Diffstat (limited to 'src/wasm.h')
-rw-r--r--src/wasm.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/wasm.h b/src/wasm.h
index 974bf1730..e9782ab6e 100644
--- a/src/wasm.h
+++ b/src/wasm.h
@@ -183,6 +183,8 @@ public:
UnreachableId,
AtomicCmpxchgId,
AtomicRMWId,
+ AtomicWaitId,
+ AtomicWakeId,
NumExpressionIds
};
Id _id;
@@ -456,6 +458,30 @@ class AtomicCmpxchg : public SpecificExpression<Expression::AtomicCmpxchgId> {
void finalize();
};
+class AtomicWait : public SpecificExpression<Expression::AtomicWaitId> {
+ public:
+ AtomicWait() = default;
+ AtomicWait(MixedArena& allocator) : AtomicWait() {}
+
+ Expression* ptr;
+ Expression* expected;
+ Expression* timeout;
+ WasmType expectedType;
+
+ void finalize();
+};
+
+class AtomicWake : public SpecificExpression<Expression::AtomicWakeId> {
+ public:
+ AtomicWake() = default;
+ AtomicWake(MixedArena& allocator) : AtomicWake() {}
+
+ Expression* ptr;
+ Expression* wakeCount;
+
+ void finalize();
+};
+
class Const : public SpecificExpression<Expression::ConstId> {
public:
Const() {}