summaryrefslogtreecommitdiff
path: root/src/wasm-binary.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-02-01 14:43:19 -0800
committerAlon Zakai <alonzakai@gmail.com>2016-02-01 15:01:19 -0800
commit5a2217d4d50c5302562ba29fb38a60edbe84d262 (patch)
tree25ee847d1d3d18361a3cbd89515723f448ac5c8b /src/wasm-binary.h
parentf18096a0d7d355499a218e1ff4196b296a1f82b1 (diff)
downloadbinaryen-5a2217d4d50c5302562ba29fb38a60edbe84d262.tar.gz
binaryen-5a2217d4d50c5302562ba29fb38a60edbe84d262.tar.bz2
binaryen-5a2217d4d50c5302562ba29fb38a60edbe84d262.zip
add return node
Diffstat (limited to 'src/wasm-binary.h')
-rw-r--r--src/wasm-binary.h14
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: {