diff options
Diffstat (limited to 'src/wasm-binary.h')
-rw-r--r-- | src/wasm-binary.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/wasm-binary.h b/src/wasm-binary.h index 26673a966..1cc6f0673 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -916,6 +916,15 @@ public: recurse(curr->ifFalse); recurse(curr->condition); } + void visitReturn(Return *curr) { + if (debug) std::cerr << "zz node: Return" << std::endl; + o << int8_t(BinaryConsts::Return); + if (curr->value) { + recurse(curr->value); + } else { + visitNop(nullptr); + } + } void visitHost(Host *curr) { if (debug) std::cerr << "zz node: Host" << std::endl; switch (curr->op) { @@ -1263,6 +1272,7 @@ public: case BinaryConsts::GetLocal: visitGetLocal((curr = allocator.alloc<GetLocal>())->cast<GetLocal>()); break; case BinaryConsts::SetLocal: visitSetLocal((curr = allocator.alloc<SetLocal>())->cast<SetLocal>()); break; case BinaryConsts::Select: visitSelect((curr = allocator.alloc<Select>())->cast<Select>()); break; + case BinaryConsts::Return: visitReturn((curr = allocator.alloc<Return>())->cast<Return>()); break; case BinaryConsts::Nop: visitNop((curr = allocator.alloc<Nop>())->cast<Nop>()); break; case BinaryConsts::Unreachable: visitUnreachable((curr = allocator.alloc<Unreachable>())->cast<Unreachable>()); break; default: { @@ -1603,6 +1613,10 @@ public: readExpression(curr->condition); curr->finalize(); } + void visitReturn(Return *curr) { + if (debug) std::cerr << "zz node: Return" << std::endl; + readExpression(curr->value); + } bool maybeVisitImpl(Host *curr, uint8_t code) { switch (code) { case BinaryConsts::MemorySize: { |