summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-10-31 10:31:50 -0700
committerAlon Zakai <alonzakai@gmail.com>2015-10-31 10:31:50 -0700
commit2824e966bb1dc9cbc90365b39000540f84fae82c (patch)
tree192d172247023667b88efb999e83b8d87b0a0448 /src
parent6d2dec86df49087c9e0a8f530e47fe9fb344e6e6 (diff)
downloadbinaryen-2824e966bb1dc9cbc90365b39000540f84fae82c.tar.gz
binaryen-2824e966bb1dc9cbc90365b39000540f84fae82c.tar.bz2
binaryen-2824e966bb1dc9cbc90365b39000540f84fae82c.zip
convert and host
Diffstat (limited to 'src')
-rw-r--r--src/wasm-interpreter.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/wasm-interpreter.cpp b/src/wasm-interpreter.cpp
index 52d01dee1..ec7197203 100644
--- a/src/wasm-interpreter.cpp
+++ b/src/wasm-interpreter.cpp
@@ -247,8 +247,18 @@ public:
}
}
Flow visitConvert(Convert *curr) override {
+ Flow flow = visit(curr->value);
+ if (flow.breaking()) return flow;
+ Literal value = flow.value;
+ switch (curr->op) { // :-)
+ case ConvertUInt32: return Flow(Literal(double(uint32_t(value.geti32()))));
+ case ConvertSInt32: return Flow(Literal(double(value.geti32())));
+ case TruncSFloat64: return Flow(Literal(int32_t(value.getf64())));
+ default: abort();
+ }
}
Flow visitHost(Host *curr) override {
+ abort();
}
Flow visitNop(Nop *curr) override {
return Flow();