@@ -38,8 +38,9 @@ typealias InstanceFieldReadsType = PersistentSet<InstanceFieldReadOperation>
3838typealias SpeculativelyNotNullAddressesType = PersistentList <UtAddrExpression >
3939typealias SymbolicEnumValuesType = PersistentList <ObjectValue >
4040
41- context(Simplificator )
42- class MemoryUpdateSimplificator : CachingSimplificatorAdapter <MemoryUpdate >() {
41+ class MemoryUpdateSimplificator (
42+ private val simplificator : Simplificator
43+ ) : CachingSimplificatorAdapter<MemoryUpdate>() {
4344 override fun simplifyImpl (expression : MemoryUpdate ): MemoryUpdate {
4445 val stores = simplifyStores(expression.stores)
4546 val touchedChunkDescriptors = simplifyTocuhedChunkDescriptors(expression.touchedChunkDescriptors)
@@ -83,8 +84,8 @@ class MemoryUpdateSimplificator : CachingSimplificatorAdapter<MemoryUpdate>() {
8384 .mutate { prevStores ->
8485 prevStores.replaceAll { store ->
8586 store.copy(
86- index = store.index.accept(this @Simplificator ),
87- value = store.value.accept(this @Simplificator )
87+ index = store.index.accept(simplificator ),
88+ value = store.value.accept(simplificator )
8889 )
8990 }
9091 }
@@ -94,28 +95,30 @@ class MemoryUpdateSimplificator : CachingSimplificatorAdapter<MemoryUpdate>() {
9495
9596 private fun simplifyConcrete (concrete : ConcreteType ): ConcreteType =
9697 concrete
97- .mapKeys { (k, _) -> k.accept(this @Simplificator ) as UtAddrExpression }
98+ .mapKeys { (k, _) -> k.accept(simplificator ) as UtAddrExpression }
9899 .toPersistentMap()
99100
100101 private fun simplifyMockInfos (mockInfos : MockInfosType ): MockInfosType =
101102 mockInfos.mutate { prevMockInfos ->
102103 prevMockInfos.replaceAll {
103- simplifyMockInfoEnriched(it)
104+ with (simplificator) {
105+ simplifyMockInfoEnriched(it)
106+ }
104107 }
105108 }
106109
107110
108111 private fun simplifyStaticInstanceStorage (staticInstanceStorage : StaticInstanceStorageType ): StaticInstanceStorageType =
109112 staticInstanceStorage.mutate { prevStorage ->
110- prevStorage.replaceAll { _, v -> simplifySymbolicValue(v) as ObjectValue }
113+ prevStorage.replaceAll { _, v -> with (simplificator) { simplifySymbolicValue(v) as ObjectValue } }
111114 }
112115
113116 private fun simplifyInitializedStaticFields (initializedStaticFields : InitializedStaticFieldsType ): InitializedStaticFieldsType =
114117 initializedStaticFields
115118
116119 private fun simplifyStaticFieldsUpdates (staticFieldsUpdates : StaticFieldsUpdatesType ): StaticFieldsUpdatesType =
117120 staticFieldsUpdates.mutate { prevUpdates ->
118- prevUpdates.replaceAll { staticFieldMemoryUpdateInfo(it) }
121+ prevUpdates.replaceAll { with (simplificator) { staticFieldMemoryUpdateInfo(it) } }
119122 }
120123
121124 private fun simplifyMeaningfulStaticFields (meaningfulStaticFields : MeaningfulStaticFieldsType ): MeaningfulStaticFieldsType =
@@ -124,40 +127,40 @@ class MemoryUpdateSimplificator : CachingSimplificatorAdapter<MemoryUpdate>() {
124127
125128 private fun simplifyAddrToArrayType (addrToArrayType : AddrToArrayTypeType ): AddrToArrayTypeType =
126129 addrToArrayType
127- .mapKeys { (k, _) -> k.accept(this @Simplificator ) as UtAddrExpression }
130+ .mapKeys { (k, _) -> k.accept(simplificator ) as UtAddrExpression }
128131 .toPersistentMap()
129132
130133
131134 private fun simplifyAddToMockInfo (addrToMockInfo : AddrToMockInfoType ): AddrToMockInfoType =
132135 addrToMockInfo
133- .mapKeys { (k, _) -> k.accept(this @Simplificator ) as UtAddrExpression }
136+ .mapKeys { (k, _) -> k.accept(simplificator ) as UtAddrExpression }
134137 .toPersistentMap()
135138
136139 private fun simplifyVisitedValues (visitedValues : VisitedValuesType ): VisitedValuesType =
137140 visitedValues.mutate { prevValues ->
138- prevValues.replaceAll { it.accept(this @Simplificator ) as UtAddrExpression }
141+ prevValues.replaceAll { it.accept(simplificator ) as UtAddrExpression }
139142 }
140143
141144 private fun simplifyTouchedAddresses (touchedAddresses : TouchedAddressesType ): TouchedAddressesType =
142145 touchedAddresses.mutate { prevAddresses ->
143- prevAddresses.replaceAll { it.accept(this @Simplificator ) as UtAddrExpression }
146+ prevAddresses.replaceAll { it.accept(simplificator ) as UtAddrExpression }
144147 }
145148
146149 private fun simplifyClassIdToClearStatics (classIdToClearStatics : ClassIdToClearStaticsType ): ClassIdToClearStaticsType =
147150 classIdToClearStatics
148151
149152 private fun simplifyInstanceFieldReads (instanceFieldReads : InstanceFieldReadsType ): InstanceFieldReadsType =
150153 instanceFieldReads
151- .map { it.copy(addr = it.addr.accept(this @Simplificator ) as UtAddrExpression ) }
154+ .map { it.copy(addr = it.addr.accept(simplificator ) as UtAddrExpression ) }
152155 .toPersistentSet()
153156
154157 private fun simplifySpeculativelyNotNullAddresses (speculativelyNotNullAddresses : SpeculativelyNotNullAddressesType ): SpeculativelyNotNullAddressesType =
155158 speculativelyNotNullAddresses.mutate { prevAddresses ->
156- prevAddresses.replaceAll { it.accept(this @Simplificator ) as UtAddrExpression }
159+ prevAddresses.replaceAll { it.accept(simplificator ) as UtAddrExpression }
157160 }
158161
159162 private fun simplifyEnumValues (symbolicEnumValues : SymbolicEnumValuesType ): SymbolicEnumValuesType =
160163 symbolicEnumValues.mutate { values ->
161- values.replaceAll { simplifySymbolicValue(it) as ObjectValue }
164+ values.replaceAll { with (simplificator) { simplifySymbolicValue(it) as ObjectValue } }
162165 }
163166}
0 commit comments