diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-11-02 11:07:27 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-11-02 11:07:27 -0800 |
commit | cd36ba627d84d5ac27948bb30296d34f72b765f8 (patch) | |
tree | 87f3b37b0d80d6873256ec4608b437a3dc396717 /src | |
parent | c4cbc717311f50607c420c2d388bafd82e7ef518 (diff) | |
download | binaryen-cd36ba627d84d5ac27948bb30296d34f72b765f8.tar.gz binaryen-cd36ba627d84d5ac27948bb30296d34f72b765f8.tar.bz2 binaryen-cd36ba627d84d5ac27948bb30296d34f72b765f8.zip |
more intepreter debugging
Diffstat (limited to 'src')
-rw-r--r-- | src/wasm-interpreter.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h index edeb2b548..022b274af 100644 --- a/src/wasm-interpreter.h +++ b/src/wasm-interpreter.h @@ -78,18 +78,22 @@ public: struct IndentHandler { int& indent; const char *name; - IndentHandler(int& indent, const char *name) : indent(indent), name(name) { + IndentHandler(int& indent, const char *name, Expression *expression) : indent(indent), name(name) { doIndent(std::cout, indent); - std::cout << "visit " << name << '\n'; + std::cout << "visit " << name << " :\n"; + indent++; + doIndent(std::cout, indent); + expression->print(std::cout, indent) << '\n'; indent++; } ~IndentHandler() { indent--; + indent--; doIndent(std::cout, indent); std::cout << "exit " << name << '\n'; } }; - #define NOTE_ENTER(x) IndentHandler indentHandler(instance.indent, x); + #define NOTE_ENTER(x) IndentHandler indentHandler(instance.indent, x, curr); #define NOTE_EVAL() { doIndent(std::cout, instance.indent); std::cout << "eval " << indentHandler.name << '\n'; } #define NOTE_EVAL1(p0) { doIndent(std::cout, instance.indent); std::cout << "eval " << indentHandler.name << '(' << p0 << ")\n"; } #define NOTE_EVAL2(p0, p1) { doIndent(std::cout, instance.indent); std::cout << "eval " << indentHandler.name << '(' << p0 << ", " << p1 << ")\n"; } @@ -208,6 +212,7 @@ public: NOTE_ENTER("SetLocal"); Flow flow = visit(curr->value); if (flow.breaking()) return flow; + NOTE_EVAL1(flow.value); scope.locals[curr->name] = flow.value; return flow; } |