summaryrefslogtreecommitdiff
path: root/src/wasm-interpreter.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-11-18 16:05:54 -0800
committerAlon Zakai <alonzakai@gmail.com>2015-11-18 16:05:54 -0800
commita3c2d97c0d8c0f2d33ea9e381e98d9dec8172d63 (patch)
treea2ebb2fc674960151f1c8c9991bd1fe6d6c8209d /src/wasm-interpreter.h
parentfda902dce36c78fe358b48252af5e0e1e4b2ad75 (diff)
downloadbinaryen-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.h5
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;