diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-11-02 15:22:31 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-11-02 15:22:31 -0800 |
commit | a25a0091a2066a390ee6eade7e6ca1fc6309292a (patch) | |
tree | 085af177c1ca132412b4c4816a00b560f4ce4bf2 | |
parent | c711d4407abe1d02a7474329d7f6fa2b315a8df8 (diff) | |
download | binaryen-a25a0091a2066a390ee6eade7e6ca1fc6309292a.tar.gz binaryen-a25a0091a2066a390ee6eade7e6ca1fc6309292a.tar.bz2 binaryen-a25a0091a2066a390ee6eade7e6ca1fc6309292a.zip |
fix switch
-rw-r--r-- | src/wasm-interpreter.h | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h index 6e1c960bc..82e791389 100644 --- a/src/wasm-interpreter.h +++ b/src/wasm-interpreter.h @@ -72,6 +72,11 @@ public: breakTo.clear(); } } + + std::ostream& print(std::ostream& o) { + o << "(flow " << (breakTo.is() ? breakTo.str : "-") << " : " << value << ')'; + return o; + } }; #ifdef WASM_INTERPRETER_DEBUG @@ -82,12 +87,12 @@ public: doIndent(std::cout, indent); std::cout << "visit " << name << " :\n"; indent++; - doIndent(std::cout, indent); - expression->print(std::cout, indent) << '\n'; - indent++; + //doIndent(std::cout, indent); + //expression->print(std::cout, indent) << '\n'; + //indent++; } ~IndentHandler() { - indent--; + //indent--; indent--; doIndent(std::cout, indent); std::cout << "exit " << name << '\n'; @@ -168,6 +173,7 @@ public: flow.clearIf(curr->name); return flow; } + NOTE_EVAL1(flow.value); int32_t index = flow.value.geti32(); Name target = curr->default_; if (index >= 0 && index < curr->targets.size()) { @@ -184,7 +190,7 @@ public: Switch::Case& c = curr->cases[caseIndex]; Flow flow = visit(c.body); if (flow.breaking()) { - flow.clearIf(c.name); + flow.clearIf(curr->name); return flow; } caseIndex++; |