From 74b9e0b86749c984c6b74cb7b1c5993930bebbfd Mon Sep 17 00:00:00 2001 From: IlyaMuravjov Date: Wed, 22 Nov 2023 17:20:59 +0300 Subject: [PATCH] Make USVM descriptor to UtModel cache consider state kind (initial or final) --- .../contest/usvm/converter/JcToUtModelConverter.kt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/utbot-junit-contest/src/main/kotlin/org/utbot/contest/usvm/converter/JcToUtModelConverter.kt b/utbot-junit-contest/src/main/kotlin/org/utbot/contest/usvm/converter/JcToUtModelConverter.kt index 67b955af2f..29f129f3ad 100644 --- a/utbot-junit-contest/src/main/kotlin/org/utbot/contest/usvm/converter/JcToUtModelConverter.kt +++ b/utbot-junit-contest/src/main/kotlin/org/utbot/contest/usvm/converter/JcToUtModelConverter.kt @@ -38,14 +38,15 @@ class JcToUtModelConverter( private val jcClasspath: JcClasspath, private val instToUtModelConverter: UTestInstToUtModelConverter, ) { - private val descriptorToModelCache = mutableMapOf() + private val descriptorToModelCache = + mutableMapOf, UtModel>() private val refIdAndStateKindToDescriptorCache = mutableMapOf, UTestValueDescriptor>() fun convert( valueDescriptor: UTestValueDescriptor, stateKind: EnvironmentStateKind, - ): UtModel = descriptorToModelCache.getOrPut(valueDescriptor) { + ): UtModel = descriptorToModelCache.getOrPut(valueDescriptor to stateKind) { if (stateKind == EnvironmentStateKind.INITIAL || valueDescriptor.origin is UTestMock) valueDescriptor.origin?.let { originExpr -> val model = instToUtModelConverter.findModelByInst(originExpr as UTestExpression) @@ -79,7 +80,7 @@ class JcToUtModelConverter( valueDescriptor: UTestValueDescriptor, stateKind: EnvironmentStateKind, curModelId: Int, - ): UtModel = descriptorToModelCache.getOrPut(valueDescriptor) { + ): UtModel = descriptorToModelCache.getOrPut(valueDescriptor to stateKind) { if (valueDescriptor is UTestRefDescriptor) { refIdAndStateKindToDescriptorCache[valueDescriptor.refId to stateKind] = valueDescriptor } @@ -96,7 +97,7 @@ class JcToUtModelConverter( fields = fields, ) - descriptorToModelCache[valueDescriptor] = model + descriptorToModelCache[valueDescriptor to stateKind] = model fields += valueDescriptor.fields .entries @@ -120,7 +121,7 @@ class JcToUtModelConverter( stores = stores, ) - descriptorToModelCache[valueDescriptor] = model + descriptorToModelCache[valueDescriptor to stateKind] = model valueDescriptor.value .map { elemDescr -> convert(elemDescr, stateKind) } @@ -182,6 +183,6 @@ class JcToUtModelConverter( stateKind: EnvironmentStateKind ): UtModel? = refIdAndStateKindToDescriptorCache[refId to stateKind]?.let { - descriptorToModelCache[it] + descriptorToModelCache[it to stateKind] } } \ No newline at end of file