Skip to content

Commit c1798fc

Browse files
committed
Free solver after use
1 parent 10e09aa commit c1798fc

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

src/main/scala/inox/solvers/combinators/NonIncrementalSolver.scala

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,30 +18,36 @@ trait NonIncrementalSolver extends AbstractSolver { self =>
1818
type Model = self.Model
1919
}
2020

21-
val assertions: IncrementalSet[Trees] = new IncrementalSet[Trees]
21+
val assertions: IncrementalSeq[Trees] = new IncrementalSeq[Trees]
2222

23-
val allSolvers: ArrayBuffer[AbstractSolver] = ArrayBuffer()
23+
var currentSolver: Option[AbstractSolver] = None
2424

2525
def assertCnstr(expression: Trees): Unit = assertions += expression
2626
def reset(): Unit = assertions.clear()
27-
def free(): Unit = for (solver <- allSolvers) solver.free()
28-
def interrupt(): Unit = for (solver <- allSolvers) solver.interrupt()
27+
def free(): Unit = for (solver <- currentSolver) solver.free()
28+
def interrupt(): Unit = for (solver <- currentSolver) solver.interrupt()
2929

3030
override def check(config: CheckConfiguration): config.Response[Model, Assumptions] = {
3131
val newSolver = underlying()
32-
allSolvers.append(newSolver)
32+
currentSolver = Some(newSolver)
3333
for (expression <- assertions)
3434
newSolver.assertCnstr(expression)
35-
newSolver.check(config)
35+
val res = newSolver.check(config)
36+
newSolver.free()
37+
currentSolver = None
38+
res
3639
}
3740

3841
override def checkAssumptions(config: Configuration)
3942
(assumptions: Set[Trees]): config.Response[Model, Assumptions] = {
4043
val newSolver = underlying()
41-
allSolvers.append(newSolver)
44+
currentSolver = Some(newSolver)
4245
for (expression <- assertions)
4346
newSolver.assertCnstr(expression)
44-
newSolver.checkAssumptions(config)(assumptions)
47+
val res = newSolver.checkAssumptions(config)(assumptions)
48+
newSolver.free()
49+
currentSolver = None
50+
res
4551
}
4652

4753
def push(): Unit = assertions.push()

0 commit comments

Comments
 (0)