diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-10-30 22:27:58 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-10-30 22:27:58 -0700 |
commit | 9f8a400879dcd35853e6c42bd1bc53c8c3fa51eb (patch) | |
tree | cc5387231e5f12df389ffabf51067e8deef2d9a5 /src/wasm-interpreter.cpp | |
parent | 3067079eec5759fbbbf81872b32a9ae4a2dd99fc (diff) | |
download | binaryen-9f8a400879dcd35853e6c42bd1bc53c8c3fa51eb.tar.gz binaryen-9f8a400879dcd35853e6c42bd1bc53c8c3fa51eb.tar.bz2 binaryen-9f8a400879dcd35853e6c42bd1bc53c8c3fa51eb.zip |
getlocal/setlocal in interpreter
Diffstat (limited to 'src/wasm-interpreter.cpp')
-rw-r--r-- | src/wasm-interpreter.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/wasm-interpreter.cpp b/src/wasm-interpreter.cpp index 84f9b585a..0bb332bb7 100644 --- a/src/wasm-interpreter.cpp +++ b/src/wasm-interpreter.cpp @@ -64,6 +64,7 @@ public: // Execute a statement class ExpressionRunner : public WasmVisitor<Flow> { FunctionScope& scope; + public: ExpressionRunner(FunctionScope& scope) : scope(scope) {} @@ -130,8 +131,13 @@ public: Flow visitCallIndirect(CallIndirect *curr) override { } Flow visitGetLocal(GetLocal *curr) override { + return scope[curr->id]; } Flow visitSetLocal(SetLocal *curr) override { + Flow flow = visit(curr->value); + if (flow.breaking()) return flow; + scope[curr->id] = flow.value; + return flow; } Flow visitLoad(Load *curr) override { } |