diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-11-18 16:05:54 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-11-18 16:05:54 -0800 |
commit | a3c2d97c0d8c0f2d33ea9e381e98d9dec8172d63 (patch) | |
tree | a2ebb2fc674960151f1c8c9991bd1fe6d6c8209d /src/wasm-interpreter.h | |
parent | fda902dce36c78fe358b48252af5e0e1e4b2ad75 (diff) | |
download | binaryen-a3c2d97c0d8c0f2d33ea9e381e98d9dec8172d63.tar.gz binaryen-a3c2d97c0d8c0f2d33ea9e381e98d9dec8172d63.tar.bz2 binaryen-a3c2d97c0d8c0f2d33ea9e381e98d9dec8172d63.zip |
add some interpreter debugging
Diffstat (limited to 'src/wasm-interpreter.h')
-rw-r--r-- | src/wasm-interpreter.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h index e5a57fcb2..2458b60e1 100644 --- a/src/wasm-interpreter.h +++ b/src/wasm-interpreter.h @@ -153,10 +153,12 @@ private: } }; #define NOTE_ENTER(x) IndentHandler indentHandler(instance.indent, x, curr); + #define NOTE_NAME(p0) { doIndent(std::cout, instance.indent); std::cout << "name in " << indentHandler.name << '(' << Name(p0) << ")\n"; } #define NOTE_EVAL1(p0) { doIndent(std::cout, instance.indent); std::cout << "eval in " << indentHandler.name << '(' << p0 << ")\n"; } #define NOTE_EVAL2(p0, p1) { doIndent(std::cout, instance.indent); std::cout << "eval in " << indentHandler.name << '(' << p0 << ", " << p1 << ")\n"; } #else #define NOTE_ENTER(x) + #define NOTE_NAME(p0) #define NOTE_EVAL1(p0) #define NOTE_EVAL2(p0, p1) #endif @@ -267,6 +269,7 @@ private: Flow visitCall(Call *curr) override { NOTE_ENTER("Call"); + NOTE_NAME(curr->target); LiteralList arguments; Flow flow = generateArguments(curr->operands, arguments); if (flow.breaking()) return flow; @@ -301,6 +304,7 @@ private: Flow visitGetLocal(GetLocal *curr) override { NOTE_ENTER("GetLocal"); IString name = curr->name; + NOTE_NAME(name); NOTE_EVAL1(scope.locals[name]); return scope.locals[name]; } @@ -309,6 +313,7 @@ private: IString name = curr->name; Flow flow = visit(curr->value); if (flow.breaking()) return flow; + NOTE_NAME(name); NOTE_EVAL1(flow.value); assert(flow.value.type == curr->type); scope.locals[name] = flow.value; |