diff options
author | Derek Schuff <dschuff@chromium.org> | 2017-08-24 12:43:12 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-24 12:43:12 -0700 |
commit | e60fcd0ba97ed75440c6f838619455be7a5e90a3 (patch) | |
tree | dbf187ed1eefcc9e16d5f5fac4be38b3fb539f94 /src/wasm.h | |
parent | b07fafcebebab82dba46012256edc6445862cfce (diff) | |
download | binaryen-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.h | 26 |
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() {} |