summaryrefslogtreecommitdiff
path: root/src/expr
diff options
context:
space:
mode:
authorMorgan Deters <mdeters@gmail.com>2011-06-06 21:37:23 +0000
committerMorgan Deters <mdeters@gmail.com>2011-06-06 21:37:23 +0000
commite64686fed86068e977ac84c5776438935f446f00 (patch)
tree455592297e26e3ac84a8027db0e70e74dc3ecdc7 /src/expr
parentdaa163e694d257ffe8ba7ae8ccb240bcbfb1c276 (diff)
Fix for Mac OS breakage (x86 didn't crash, but probably would, eventually, on some problems---valgrind gave many complaints): the problem was that calloc() (in the Backtracker) wasn't allocating enough space for the type located at the resulting address. Resolves bug #263.
Also, some debugging improvements.
Diffstat (limited to 'src/expr')
-rw-r--r--src/expr/node_builder.h16
-rw-r--r--src/expr/node_manager.cpp8
-rw-r--r--src/expr/node_manager.h19
3 files changed, 31 insertions, 12 deletions
diff --git a/src/expr/node_builder.h b/src/expr/node_builder.h
index cc7e89bc8..95f7c0437 100644
--- a/src/expr/node_builder.h
+++ b/src/expr/node_builder.h
@@ -900,8 +900,12 @@ expr::NodeValue* NodeBuilder<nchild_thresh>::constructNV() {
nv->d_id = expr::NodeValue::next_id++;// FIXME multithreading
nv->d_rc = 0;
setUsed();
- Debug("gc") << "creating node value " << nv
- << " [" << nv->d_id << "]: " << *nv << "\n";
+ if(Debug.isOn("gc")) {
+ Debug("gc") << "creating node value " << nv
+ << " [" << nv->d_id << "]: ";
+ nv->printAst(Debug("gc"));
+ Debug("gc") << std::endl;
+ }
return nv;
}
@@ -982,8 +986,12 @@ expr::NodeValue* NodeBuilder<nchild_thresh>::constructNV() {
//poolNv = nv;
d_nm->poolInsert(nv);
- Debug("gc") << "creating node value " << nv
- << " [" << nv->d_id << "]: " << *nv << "\n";
+ if(Debug.isOn("gc")) {
+ Debug("gc") << "creating node value " << nv
+ << " [" << nv->d_id << "]: ";
+ nv->printAst(Debug("gc"));
+ Debug("gc") << std::endl;
+ }
return nv;
}
} else {
diff --git a/src/expr/node_manager.cpp b/src/expr/node_manager.cpp
index 4cde0c624..95124d297 100644
--- a/src/expr/node_manager.cpp
+++ b/src/expr/node_manager.cpp
@@ -202,8 +202,12 @@ void NodeManager::reclaimZombies() {
// collect ONLY IF still zero
if(nv->d_rc == 0) {
- Debug("gc") << "deleting node value " << nv
- << " [" << nv->d_id << "]: " << *nv << "\n";
+ if(Debug.isOn("gc")) {
+ Debug("gc") << "deleting node value " << nv
+ << " [" << nv->d_id << "]: ";
+ nv->printAst(Debug("gc"));
+ Debug("gc") << std::endl;
+ }
// remove from the pool
kind::MetaKind mk = nv->getMetaKind();
diff --git a/src/expr/node_manager.h b/src/expr/node_manager.h
index 9974df6ca..54266db13 100644
--- a/src/expr/node_manager.h
+++ b/src/expr/node_manager.h
@@ -185,10 +185,13 @@ class NodeManager {
// if d_reclaiming is set, make sure we don't call
// reclaimZombies(), because it's already running.
- Debug("gc") << "zombifying node value " << nv
- << " [" << nv->d_id << "]: " << *nv
- << (d_inReclaimZombies ? " [CURRENTLY-RECLAIMING]" : "")
- << std::endl;
+ if(Debug.isOn("gc")) {
+ Debug("gc") << "zombifying node value " << nv
+ << " [" << nv->d_id << "]: ";
+ nv->printAst(Debug("gc"));
+ Debug("gc") << (d_inReclaimZombies ? " [CURRENTLY-RECLAIMING]" : "")
+ << std::endl;
+ }
d_zombies.insert(nv);// FIXME multithreading
if(!d_inReclaimZombies) {// FIXME multithreading
@@ -1269,8 +1272,12 @@ NodeClass NodeManager::mkConstInternal(const T& val) {
new (&nv->d_children) T(val);
poolInsert(nv);
- Debug("gc") << "creating node value " << nv
- << " [" << nv->d_id << "]: " << *nv << "\n";
+ if(Debug.isOn("gc")) {
+ Debug("gc") << "creating node value " << nv
+ << " [" << nv->d_id << "]: ";
+ nv->printAst(Debug("gc"));
+ Debug("gc") << std::endl;
+ }
return NodeClass(nv);
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback