summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-10-29 17:19:55 -0700
committerAlon Zakai <alonzakai@gmail.com>2015-10-29 17:19:55 -0700
commit4d319b84d83ad3168ee798c52071e4b4b831e042 (patch)
tree992a4d5724d142353b3bf6f13806fb953ff4c511 /src
parent19abe35b2c6d191e14170c993e757cee786867cb (diff)
downloadbinaryen-4d319b84d83ad3168ee798c52071e4b4b831e042.tar.gz
binaryen-4d319b84d83ad3168ee798c52071e4b4b831e042.tar.bz2
binaryen-4d319b84d83ad3168ee798c52071e4b4b831e042.zip
use Nop
Diffstat (limited to 'src')
-rw-r--r--src/asm2wasm.cpp9
-rw-r--r--src/wasm.h2
2 files changed, 7 insertions, 4 deletions
diff --git a/src/asm2wasm.cpp b/src/asm2wasm.cpp
index e3fb23c4f..28ff7d563 100644
--- a/src/asm2wasm.cpp
+++ b/src/asm2wasm.cpp
@@ -77,6 +77,7 @@ struct WasmWalker {
virtual Expression* walkCompare(Compare *curr) { return curr; };
virtual Expression* walkConvert(Convert *curr) { return curr; };
virtual Expression* walkHost(Host *curr) { return curr; };
+ virtual Expression* walkNop(Nop *curr) { return curr; };
// children-first
Expression *walk(Expression *curr) {
@@ -181,6 +182,10 @@ struct WasmWalker {
}
return walkHost(cast);
}
+ if (Nop *cast = dynamic_cast<Nop*>(curr)) {
+ return walkNop(cast);
+ }
+ abort();
}
void startWalk(Function *func) {
@@ -1040,9 +1045,7 @@ Function* Asm2WasmModule::processFunction(Ref ast) {
return ret;
} else if (what == SWITCH) {
// XXX switch is still in flux in the spec repo, just emit a placeholder
- auto ret = allocator.alloc<Block>();
- ret->var = IString("SWITCH_PLACEHOLDER");
- return ret;
+ return allocator.alloc<Nop>();
#if 0
IString name = getNextId("switch");
breakStack.push_back(name);
diff --git a/src/wasm.h b/src/wasm.h
index ff273e5c0..6aa568210 100644
--- a/src/wasm.h
+++ b/src/wasm.h
@@ -251,7 +251,7 @@ typedef std::vector<Expression*> ExpressionList; // TODO: optimize
class Nop : public Expression {
std::ostream& print(std::ostream &o, unsigned indent) override {
- o << "nop";
+ printMinorOpening(o, "nop") << ')';
return o;
}
};