From 5a2217d4d50c5302562ba29fb38a60edbe84d262 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 1 Feb 2016 14:43:19 -0800 Subject: add return node --- src/wasm-binary.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/wasm-binary.h') 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())->cast()); break; case BinaryConsts::SetLocal: visitSetLocal((curr = allocator.alloc())->cast()); break; case BinaryConsts::Select: visitSelect((curr = allocator.alloc()); break; + case BinaryConsts::Return: visitReturn((curr = allocator.alloc())->cast()); break; case BinaryConsts::Nop: visitNop((curr = allocator.alloc())->cast()); break; case BinaryConsts::Unreachable: visitUnreachable((curr = allocator.alloc())->cast()); 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: { -- cgit v1.2.3