summaryrefslogtreecommitdiff
path: root/src/binaryen-c.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-07-11 15:22:58 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-07-12 13:53:26 -0700
commitf050b6300ceb6039d608abc20939ebf241378cdc (patch)
tree2c1f911f38b436ec4d50a8f5382730cef84d55de /src/binaryen-c.cpp
parent91e38285dc27e5dbac3291258342835fc3e90eab (diff)
downloadbinaryen-f050b6300ceb6039d608abc20939ebf241378cdc.tar.gz
binaryen-f050b6300ceb6039d608abc20939ebf241378cdc.tar.bz2
binaryen-f050b6300ceb6039d608abc20939ebf241378cdc.zip
allow multiple traces
Diffstat (limited to 'src/binaryen-c.cpp')
-rw-r--r--src/binaryen-c.cpp39
1 files changed, 24 insertions, 15 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 20fefece0..89953e0ff 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -93,19 +93,7 @@ BinaryenType BinaryenFloat64(void) { return f64; }
BinaryenModuleRef BinaryenModuleCreate(void) {
if (tracing) {
- std::cout << "// beginning a Binaryen API trace\n";
- std::cout << "#include <math.h>\n";
- std::cout << "#include <map>\n";
- std::cout << "#include \"src/binaryen-c.h\"\n";
- std::cout << "int main() {\n";
- std::cout << " std::map<size_t, BinaryenFunctionTypeRef> functionTypes;\n";
- std::cout << " std::map<size_t, BinaryenExpressionRef> expressions;\n";
- std::cout << " expressions[size_t(NULL)] = BinaryenExpressionRef(NULL);\n";
- std::cout << " std::map<size_t, BinaryenFunctionRef> functions;\n";
- std::cout << " std::map<size_t, RelooperBlockRef> relooperBlocks;\n";
- std::cout << " BinaryenModuleRef the_module = BinaryenModuleCreate();\n";
- std::cout << " RelooperRef the_relooper = NULL;\n";
- expressions[NULL] = 0;
+ std::cout << " the_module = BinaryenModuleCreate();\n";
}
return new Module();
@@ -113,8 +101,6 @@ BinaryenModuleRef BinaryenModuleCreate(void) {
void BinaryenModuleDispose(BinaryenModuleRef module) {
if (tracing) {
std::cout << " BinaryenModuleDispose(the_module);\n";
- std::cout << " return 0;\n";
- std::cout << "}\n";
}
delete (Module*)module;
@@ -967,6 +953,29 @@ BinaryenExpressionRef RelooperRenderAndDispose(RelooperRef relooper, RelooperBlo
void BinaryenSetAPITracing(int on) {
tracing = on;
+
+ if (tracing) {
+ std::cout << "// beginning a Binaryen API trace\n";
+ std::cout << "#include <math.h>\n";
+ std::cout << "#include <map>\n";
+ std::cout << "#include \"src/binaryen-c.h\"\n";
+ std::cout << "int main() {\n";
+ std::cout << " std::map<size_t, BinaryenFunctionTypeRef> functionTypes;\n";
+ std::cout << " std::map<size_t, BinaryenExpressionRef> expressions;\n";
+ std::cout << " expressions[size_t(NULL)] = BinaryenExpressionRef(NULL);\n";
+ std::cout << " std::map<size_t, BinaryenFunctionRef> functions;\n";
+ std::cout << " std::map<size_t, RelooperBlockRef> relooperBlocks;\n";
+ std::cout << " BinaryenModuleRef the_module = BinaryenModuleCreate();\n";
+ std::cout << " RelooperRef the_relooper = NULL;\n";
+ expressions[NULL] = 0;
+ } else {
+ std::cout << " return 0;\n";
+ std::cout << "}\n";
+ functionTypes.clear();
+ expressions.clear();
+ functions.clear();
+ relooperBlocks.clear();
+ }
}
} // extern "C"