diff options
Diffstat (limited to 'src/wasm/wasm-binary.cpp')
-rw-r--r-- | src/wasm/wasm-binary.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp index d75973ab0..b7daeda5a 100644 --- a/src/wasm/wasm-binary.cpp +++ b/src/wasm/wasm-binary.cpp @@ -2302,6 +2302,9 @@ BinaryConsts::ASTNodes WasmBinaryBuilder::readExpression(Expression*& curr) { if (maybeVisitAtomicNotify(curr, code)) { break; } + if (maybeVisitAtomicFence(curr, code)) { + break; + } throwError("invalid code after atomic prefix: " + std::to_string(code)); break; } @@ -3172,6 +3175,20 @@ bool WasmBinaryBuilder::maybeVisitAtomicNotify(Expression*& out, uint8_t code) { return true; } +bool WasmBinaryBuilder::maybeVisitAtomicFence(Expression*& out, uint8_t code) { + if (code != BinaryConsts::AtomicFence) { + return false; + } + auto* curr = allocator.alloc<AtomicFence>(); + if (debug) { + std::cerr << "zz node: AtomicFence" << std::endl; + } + curr->order = getU32LEB(); + curr->finalize(); + out = curr; + return true; +} + bool WasmBinaryBuilder::maybeVisitConst(Expression*& out, uint8_t code) { Const* curr; if (debug) { |