@@ -38,8 +38,9 @@ typealias InstanceFieldReadsType = PersistentSet<InstanceFieldReadOperation>
38
38
typealias SpeculativelyNotNullAddressesType = PersistentList <UtAddrExpression >
39
39
typealias SymbolicEnumValuesType = PersistentList <ObjectValue >
40
40
41
- context(Simplificator )
42
- class MemoryUpdateSimplificator : CachingSimplificatorAdapter <MemoryUpdate >() {
41
+ class MemoryUpdateSimplificator (
42
+ private val simplificator : Simplificator
43
+ ) : CachingSimplificatorAdapter<MemoryUpdate>() {
43
44
override fun simplifyImpl (expression : MemoryUpdate ): MemoryUpdate {
44
45
val stores = simplifyStores(expression.stores)
45
46
val touchedChunkDescriptors = simplifyTocuhedChunkDescriptors(expression.touchedChunkDescriptors)
@@ -83,8 +84,8 @@ class MemoryUpdateSimplificator : CachingSimplificatorAdapter<MemoryUpdate>() {
83
84
.mutate { prevStores ->
84
85
prevStores.replaceAll { store ->
85
86
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 )
88
89
)
89
90
}
90
91
}
@@ -94,28 +95,30 @@ class MemoryUpdateSimplificator : CachingSimplificatorAdapter<MemoryUpdate>() {
94
95
95
96
private fun simplifyConcrete (concrete : ConcreteType ): ConcreteType =
96
97
concrete
97
- .mapKeys { (k, _) -> k.accept(this @Simplificator ) as UtAddrExpression }
98
+ .mapKeys { (k, _) -> k.accept(simplificator ) as UtAddrExpression }
98
99
.toPersistentMap()
99
100
100
101
private fun simplifyMockInfos (mockInfos : MockInfosType ): MockInfosType =
101
102
mockInfos.mutate { prevMockInfos ->
102
103
prevMockInfos.replaceAll {
103
- simplifyMockInfoEnriched(it)
104
+ with (simplificator) {
105
+ simplifyMockInfoEnriched(it)
106
+ }
104
107
}
105
108
}
106
109
107
110
108
111
private fun simplifyStaticInstanceStorage (staticInstanceStorage : StaticInstanceStorageType ): StaticInstanceStorageType =
109
112
staticInstanceStorage.mutate { prevStorage ->
110
- prevStorage.replaceAll { _, v -> simplifySymbolicValue(v) as ObjectValue }
113
+ prevStorage.replaceAll { _, v -> with (simplificator) { simplifySymbolicValue(v) as ObjectValue } }
111
114
}
112
115
113
116
private fun simplifyInitializedStaticFields (initializedStaticFields : InitializedStaticFieldsType ): InitializedStaticFieldsType =
114
117
initializedStaticFields
115
118
116
119
private fun simplifyStaticFieldsUpdates (staticFieldsUpdates : StaticFieldsUpdatesType ): StaticFieldsUpdatesType =
117
120
staticFieldsUpdates.mutate { prevUpdates ->
118
- prevUpdates.replaceAll { staticFieldMemoryUpdateInfo(it) }
121
+ prevUpdates.replaceAll { with (simplificator) { staticFieldMemoryUpdateInfo(it) } }
119
122
}
120
123
121
124
private fun simplifyMeaningfulStaticFields (meaningfulStaticFields : MeaningfulStaticFieldsType ): MeaningfulStaticFieldsType =
@@ -124,40 +127,40 @@ class MemoryUpdateSimplificator : CachingSimplificatorAdapter<MemoryUpdate>() {
124
127
125
128
private fun simplifyAddrToArrayType (addrToArrayType : AddrToArrayTypeType ): AddrToArrayTypeType =
126
129
addrToArrayType
127
- .mapKeys { (k, _) -> k.accept(this @Simplificator ) as UtAddrExpression }
130
+ .mapKeys { (k, _) -> k.accept(simplificator ) as UtAddrExpression }
128
131
.toPersistentMap()
129
132
130
133
131
134
private fun simplifyAddToMockInfo (addrToMockInfo : AddrToMockInfoType ): AddrToMockInfoType =
132
135
addrToMockInfo
133
- .mapKeys { (k, _) -> k.accept(this @Simplificator ) as UtAddrExpression }
136
+ .mapKeys { (k, _) -> k.accept(simplificator ) as UtAddrExpression }
134
137
.toPersistentMap()
135
138
136
139
private fun simplifyVisitedValues (visitedValues : VisitedValuesType ): VisitedValuesType =
137
140
visitedValues.mutate { prevValues ->
138
- prevValues.replaceAll { it.accept(this @Simplificator ) as UtAddrExpression }
141
+ prevValues.replaceAll { it.accept(simplificator ) as UtAddrExpression }
139
142
}
140
143
141
144
private fun simplifyTouchedAddresses (touchedAddresses : TouchedAddressesType ): TouchedAddressesType =
142
145
touchedAddresses.mutate { prevAddresses ->
143
- prevAddresses.replaceAll { it.accept(this @Simplificator ) as UtAddrExpression }
146
+ prevAddresses.replaceAll { it.accept(simplificator ) as UtAddrExpression }
144
147
}
145
148
146
149
private fun simplifyClassIdToClearStatics (classIdToClearStatics : ClassIdToClearStaticsType ): ClassIdToClearStaticsType =
147
150
classIdToClearStatics
148
151
149
152
private fun simplifyInstanceFieldReads (instanceFieldReads : InstanceFieldReadsType ): InstanceFieldReadsType =
150
153
instanceFieldReads
151
- .map { it.copy(addr = it.addr.accept(this @Simplificator ) as UtAddrExpression ) }
154
+ .map { it.copy(addr = it.addr.accept(simplificator ) as UtAddrExpression ) }
152
155
.toPersistentSet()
153
156
154
157
private fun simplifySpeculativelyNotNullAddresses (speculativelyNotNullAddresses : SpeculativelyNotNullAddressesType ): SpeculativelyNotNullAddressesType =
155
158
speculativelyNotNullAddresses.mutate { prevAddresses ->
156
- prevAddresses.replaceAll { it.accept(this @Simplificator ) as UtAddrExpression }
159
+ prevAddresses.replaceAll { it.accept(simplificator ) as UtAddrExpression }
157
160
}
158
161
159
162
private fun simplifyEnumValues (symbolicEnumValues : SymbolicEnumValuesType ): SymbolicEnumValuesType =
160
163
symbolicEnumValues.mutate { values ->
161
- values.replaceAll { simplifySymbolicValue(it) as ObjectValue }
164
+ values.replaceAll { with (simplificator) { simplifySymbolicValue(it) as ObjectValue } }
162
165
}
163
166
}
0 commit comments