summaryrefslogtreecommitdiff
path: root/src/wasm2asm.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-11-26 15:05:09 -0800
committerAlon Zakai <alonzakai@gmail.com>2015-11-26 15:05:09 -0800
commitd029c2fe9570c04060e3586eb3369e778200be57 (patch)
tree4cefdc5bd0a532aeb002c4d9bed3b180dc60b9b8 /src/wasm2asm.h
parent3aa164ab9a7b447f6c5f52e5ac4d0faf65e68eac (diff)
downloadbinaryen-d029c2fe9570c04060e3586eb3369e778200be57.tar.gz
binaryen-d029c2fe9570c04060e3586eb3369e778200be57.tar.bz2
binaryen-d029c2fe9570c04060e3586eb3369e778200be57.zip
wasm2asm progress
Diffstat (limited to 'src/wasm2asm.h')
-rw-r--r--src/wasm2asm.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/wasm2asm.h b/src/wasm2asm.h
index 0b81597f4..8c143b535 100644
--- a/src/wasm2asm.h
+++ b/src/wasm2asm.h
@@ -456,7 +456,7 @@ Ref Wasm2AsmBuilder::processFunctionBody(Expression* curr, IString result) {
theCall[2]->push_back(makeName(temp));
}
if (result != NO_RESULT) {
- theCall = ValueBuilder::makeAssign(makeName(result), theCall);
+ theCall = ValueBuilder::makeAssign(ValueBuilder::makeName(result), theCall);
}
ret[1]->push_back(theCall);
return ret;
@@ -468,8 +468,16 @@ Ref Wasm2AsmBuilder::processFunctionBody(Expression* curr, IString result) {
abort(); // XXX TODO
}
void visitGetLocal(GetLocal *curr) override {
+ return ValueBuilder::makeName(fromName(curr->name));
}
void visitSetLocal(SetLocal *curr) override {
+ if (!isStatement(curr)) {
+ return ValueBuilder::makeAssign(ValueBuilder::makeName(fromName(curr->name)), visit(curr->value, EXPRESSION_RESULT));
+ }
+ Ref ret = blockify(visit(curr->value, result));
+ // the output was assigned to result, so we can just assign it to our target
+ ret[1]->push_back(ValueBuilder::makeAssign(ValueBuilder::makeName(fromName(curr->name)), ValueBuilder::makeName(result)));
+ return ret;
}
void visitLoad(Load *curr) override {
}