// This is called before SAT solving, so only junk that isn't needed
// after SAT solving should be cleaned out.
- void ClearAllTables(void)
+ void ClearAllTables(void)
{
NodeLetVarMap.clear();
NodeLetVarMap1.clear();
ListOfDeclaredVars.clear();
} //End of ClearAllTables()
- ~STPMgr()
- {}
- // The ASTNodes are garbage collected. This object can only be deleted, when every node has been
- // cleaned up already. Unfortunately, some references are remaining somewhere to nodes. The
- // destructor will look like this.
+ // This will exit cleanly even if nodes remain around in memory.
+ // So it's a partial safe destructor.
void cleanup()
+ {
+ ClearAllTables();
+
+ delete runTimes;
+ runTimes = NULL;
+ ASTFalse = ASTNode(0);
+ ASTTrue = ASTNode(0);
+ ASTUndefined = ASTNode(0);
+ _current_query = ASTNode(0);
+ dummy_node = ASTNode(0);
+
+ zeroes.clear();
+ ones.clear();
+ max.clear();
+
+ Introduced_SymbolsSet.clear();
+ _symbol_unique_table.clear();
+
+ vector<IntToASTVecMap*>::iterator it = _asserts.begin();
+ vector<IntToASTVecMap*>::iterator itend = _asserts.end();
+ for(;it!=itend;it++)
+ {
+ IntToASTVecMap * j = (*it);
+ j->clear();
+ delete j;
+ }
+ _asserts.clear();
+
+ delete hashingNodeFactory;
+ }
+
+ // If ASTNode remain with references (somewhere), this will segfault.
+ ~STPMgr()
{
- delete runTimes;
- runTimes = NULL;
- ASTFalse = ASTNode(0);
- ASTTrue = ASTNode(0);
- ASTUndefined = ASTNode(0);
- _current_query = ASTNode(0);
- dummy_node = ASTNode(0);
-
- zeroes.clear();
- ones.clear();
- max.clear();
-
- Introduced_SymbolsSet.clear();
- NodeLetVarMap.clear();
- NodeLetVarMap1.clear();
- PLPrintNodeSet.clear();
- AlreadyPrintedSet.clear();
- StatInfoSet.clear();
- TermsAlreadySeenMap.clear();
- NodeLetVarVec.clear();
- ListOfDeclaredVars.clear();
- _symbol_unique_table.clear();
-
- vector<IntToASTVecMap*>::iterator it = _asserts.begin();
- vector<IntToASTVecMap*>::iterator itend = _asserts.end();
- for(;it!=itend;it++)
- {
- IntToASTVecMap * j = (*it);
- j->clear();
- delete j;
- }
- _asserts.clear();
-
- delete hashingNodeFactory;
- }
- /*
- ClearAllTables();
+ ClearAllTables();
vector<IntToASTVecMap*>::iterator it = _asserts.begin();
vector<IntToASTVecMap*>::iterator itend = _asserts.end();
CONSTANTBV::BitVector_Destroy(CreateBVConstVal);
delete hashingNodeFactory;
- */
- //}
+ }
};//End of Class STPMgr
};//end of namespace
#endif