summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-11-02 11:07:27 -0800
committerAlon Zakai <alonzakai@gmail.com>2015-11-02 11:07:27 -0800
commitcd36ba627d84d5ac27948bb30296d34f72b765f8 (patch)
tree87f3b37b0d80d6873256ec4608b437a3dc396717 /src
parentc4cbc717311f50607c420c2d388bafd82e7ef518 (diff)
downloadbinaryen-cd36ba627d84d5ac27948bb30296d34f72b765f8.tar.gz
binaryen-cd36ba627d84d5ac27948bb30296d34f72b765f8.tar.bz2
binaryen-cd36ba627d84d5ac27948bb30296d34f72b765f8.zip
more intepreter debugging
Diffstat (limited to 'src')
-rw-r--r--src/wasm-interpreter.h11
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;
}