summaryrefslogtreecommitdiffstats
path: root/src/sat/bsat/satMem.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2011-12-10 14:06:01 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2011-12-10 14:06:01 -0800
commit871171ffa42fe24c27831f05227fb9adfc512448 (patch)
tree8e9b21217fa52761edb74fc969a5f741c3279ba3 /src/sat/bsat/satMem.c
parent6c766b4f1a18794b38c81a7c2f82f692cf6a9e37 (diff)
downloadabc-871171ffa42fe24c27831f05227fb9adfc512448.tar.gz
abc-871171ffa42fe24c27831f05227fb9adfc512448.tar.bz2
abc-871171ffa42fe24c27831f05227fb9adfc512448.zip
Implemented rollback in the main SAT solver and updated PDR to use it (saves about 5% of runtime).
Diffstat (limited to 'src/sat/bsat/satMem.c')
-rw-r--r--src/sat/bsat/satMem.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/sat/bsat/satMem.c b/src/sat/bsat/satMem.c
index 30861993..e947cbf0 100644
--- a/src/sat/bsat/satMem.c
+++ b/src/sat/bsat/satMem.c
@@ -239,6 +239,9 @@ void Sat_MmFixedRestart( Sat_MmFixed_t * p )
{
int i;
char * pTemp;
+ if ( p->nChunks == 0 )
+ return;
+ assert( p->nChunks > 0 );
// deallocate all chunks except the first one
for ( i = 1; i < p->nChunks; i++ )
@@ -482,6 +485,30 @@ void Sat_MmStepStop( Sat_MmStep_t * p, int fVerbose )
/**Function*************************************************************
+ Synopsis [Stops the memory manager.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void Sat_MmStepRestart( Sat_MmStep_t * p )
+{
+ int i;
+ if ( p->nChunksAlloc )
+ {
+ for ( i = 0; i < p->nChunks; i++ )
+ ABC_FREE( p->pChunks[i] );
+ p->nChunks = 0;
+ }
+ for ( i = 0; i < p->nMems; i++ )
+ Sat_MmFixedRestart( p->pMems[i] );
+}
+
+/**Function*************************************************************
+
Synopsis [Creates the entry.]
Description []