summaryrefslogtreecommitdiff
path: root/src/wasm-interpreter.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-10-30 22:27:58 -0700
committerAlon Zakai <alonzakai@gmail.com>2015-10-30 22:27:58 -0700
commit9f8a400879dcd35853e6c42bd1bc53c8c3fa51eb (patch)
treecc5387231e5f12df389ffabf51067e8deef2d9a5 /src/wasm-interpreter.cpp
parent3067079eec5759fbbbf81872b32a9ae4a2dd99fc (diff)
downloadbinaryen-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.cpp6
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 {
}