@@ -84,7 +84,6 @@ import org.utbot.engine.symbolic.asHardConstraint
84
84
import org.utbot.engine.symbolic.asSoftConstraint
85
85
import org.utbot.engine.symbolic.asAssumption
86
86
import org.utbot.engine.symbolic.asUpdate
87
- import org.utbot.engine.symbolic.simplificators.LocalMemoryUpdateSimplificator
88
87
import org.utbot.engine.symbolic.simplificators.MemoryUpdateSimplificator
89
88
import org.utbot.engine.symbolic.simplificators.simplifySymbolicStateUpdate
90
89
import org.utbot.engine.symbolic.simplificators.simplifySymbolicValue
@@ -316,7 +315,6 @@ class Traverser(
316
315
317
316
private val simplificator = Simplificator ()
318
317
private val memoryUpdateSimplificator = with (simplificator) { MemoryUpdateSimplificator () }
319
- private val localMemoryUpdateSimplificator = with (simplificator) { LocalMemoryUpdateSimplificator () }
320
318
321
319
private fun TraversalContext.traverseStmt (current : Stmt ) {
322
320
if (doPreparatoryWorkIfRequired(current)) return
@@ -998,9 +996,10 @@ class Traverser(
998
996
createdValue
999
997
}
1000
998
999
+
1001
1000
environment.state.parameters + = Parameter (localVariable, identityRef.type, value)
1002
1001
1003
- val nextState = updateQueued (
1002
+ val nextState = updateQueuedWithoutSimplification (
1004
1003
globalGraph.succ(current),
1005
1004
SymbolicStateUpdate (localMemoryUpdates = localMemoryUpdate(localVariable to value))
1006
1005
)
@@ -1449,6 +1448,8 @@ class Traverser(
1449
1448
is ArrayValue -> arrayInstanceOf(value, expr.checkType)
1450
1449
}
1451
1450
else -> TODO (" $expr " )
1451
+ }.also {
1452
+ with (simplificator) { simplifySymbolicValue(it) }
1452
1453
}
1453
1454
1454
1455
private fun initStringLiteral (stringWrapper : ObjectValue , value : String ) {
@@ -3595,9 +3596,7 @@ class Traverser(
3595
3596
3596
3597
private fun createExceptionStateQueued (exception : SymbolicFailure , update : SymbolicStateUpdate ): ExecutionState {
3597
3598
val simplifiedUpdates = with (memoryUpdateSimplificator) {
3598
- with (localMemoryUpdateSimplificator) {
3599
- simplifySymbolicStateUpdate(queuedSymbolicStateUpdates + update)
3600
- }
3599
+ simplifySymbolicStateUpdate(queuedSymbolicStateUpdates + update)
3601
3600
}
3602
3601
val simplifiedResult = with (simplificator) {
3603
3602
simplifySymbolicValue(exception.symbolic)
@@ -3609,10 +3608,8 @@ class Traverser(
3609
3608
}
3610
3609
3611
3610
private fun updateQueued (update : SymbolicStateUpdate ): ExecutionState {
3612
- val symbolicStateUpdate = with (localMemoryUpdateSimplificator) {
3613
- with (memoryUpdateSimplificator) {
3614
- simplifySymbolicStateUpdate(queuedSymbolicStateUpdates + update)
3615
- }
3611
+ val symbolicStateUpdate = with (memoryUpdateSimplificator) {
3612
+ simplifySymbolicStateUpdate(queuedSymbolicStateUpdates + update)
3616
3613
}
3617
3614
3618
3615
return environment.state.update(
@@ -3625,34 +3622,45 @@ class Traverser(
3625
3622
update : SymbolicStateUpdate = SymbolicStateUpdate (),
3626
3623
doesntThrow : Boolean = false
3627
3624
): ExecutionState {
3628
- val symbolicStateUpdate = with (localMemoryUpdateSimplificator) {
3625
+ val simplifiedUpdates =
3629
3626
with (memoryUpdateSimplificator) {
3630
3627
simplifySymbolicStateUpdate(queuedSymbolicStateUpdates + update)
3631
3628
}
3632
- }
3633
3629
3634
3630
return environment.state.update(
3635
3631
edge,
3636
- symbolicStateUpdate ,
3632
+ simplifiedUpdates ,
3637
3633
doesntThrow
3638
3634
)
3639
3635
}
3640
3636
3637
+ private fun updateQueuedWithoutSimplification (
3638
+ edge : Edge ,
3639
+ update : SymbolicStateUpdate = SymbolicStateUpdate (),
3640
+ doesntThrow : Boolean = false
3641
+ ): ExecutionState {
3642
+ val updates = queuedSymbolicStateUpdates + update
3643
+
3644
+ return environment.state.update(
3645
+ edge,
3646
+ updates,
3647
+ doesntThrow
3648
+ )
3649
+ }
3650
+
3651
+
3641
3652
private fun pushQueued (
3642
3653
graph : ExceptionalUnitGraph ,
3643
3654
parametersWithThis : List <SymbolicValue >,
3644
3655
constraints : Set <UtBoolExpression >
3645
3656
): ExecutionState {
3646
- val updates = queuedSymbolicStateUpdates + constraints.asHardConstraint()
3647
- val simplifiedInputArguments = with (simplificator) {
3648
- ArrayDeque (parametersWithThis.map {
3649
- simplifySymbolicValue(it)
3650
- })
3657
+ val simplifiedUpdates = with (memoryUpdateSimplificator) {
3658
+ simplifySymbolicStateUpdate(queuedSymbolicStateUpdates + constraints.asHardConstraint())
3651
3659
}
3652
3660
return environment.state.push(
3653
3661
graph.head,
3654
- inputArguments = simplifiedInputArguments ,
3655
- updates ,
3662
+ inputArguments = ArrayDeque (parametersWithThis) ,
3663
+ simplifiedUpdates ,
3656
3664
graph.body.method
3657
3665
)
3658
3666
}
0 commit comments