@@ -106,10 +106,7 @@ private struct VTableSpecializer {
106106}
107107
108108/// Specializes a witness table of `conformance` for the concrete type of the conformance.
109- func specializeWitnessTable( for conformance: Conformance ,
110- _ context: ModulePassContext ,
111- _ notifyNewWitnessTable: ( WitnessTable ) -> ( ) )
112- {
109+ func specializeWitnessTable( for conformance: Conformance , _ context: ModulePassContext ) {
113110 if let existingSpecialization = context. lookupWitnessTable ( for: conformance) ,
114111 existingSpecialization. isSpecialized
115112 {
@@ -125,7 +122,7 @@ func specializeWitnessTable(for conformance: Conformance,
125122 let baseConf = conformance. isInherited ? conformance. inheritedConformance: conformance
126123 if !baseConf. isSpecialized {
127124 var visited = Set < Conformance > ( )
128- specializeDefaultMethods ( for: conformance, visited: & visited, context, notifyNewWitnessTable )
125+ specializeDefaultMethods ( for: conformance, visited: & visited, context)
129126 return
130127 }
131128
@@ -158,7 +155,7 @@ func specializeWitnessTable(for conformance: Conformance,
158155 let baseConf = context. getSpecializedConformance ( of: witness,
159156 for: conformance. type,
160157 substitutions: conformance. specializedSubstitutions)
161- specializeWitnessTable ( for: baseConf, context, notifyNewWitnessTable )
158+ specializeWitnessTable ( for: baseConf, context)
162159 return . baseProtocol( requirement: requirement, witness: baseConf)
163160 case . associatedType( let requirement, let witness) :
164161 let substType = witness. subst ( with: conformance. specializedSubstitutions)
@@ -169,15 +166,14 @@ func specializeWitnessTable(for conformance: Conformance,
169166 let concreteAssociateConf = conformance. getAssociatedConformance ( ofAssociatedType: requirement. rawType,
170167 to: assocConf. protocol)
171168 if concreteAssociateConf. isSpecialized {
172- specializeWitnessTable ( for: concreteAssociateConf, context, notifyNewWitnessTable )
169+ specializeWitnessTable ( for: concreteAssociateConf, context)
173170 }
174171 return . associatedConformance( requirement: requirement,
175172 witness: concreteAssociateConf)
176173 }
177174 }
178- let newWT = context. createSpecializedWitnessTable ( entries: newEntries, conformance: conformance,
179- linkage: . shared, serialized: false )
180- notifyNewWitnessTable ( newWT)
175+ context. createSpecializedWitnessTable ( entries: newEntries, conformance: conformance,
176+ linkage: . shared, serialized: false )
181177}
182178
183179/// Specializes the default methods of a non-generic witness table.
@@ -186,8 +182,7 @@ func specializeWitnessTable(for conformance: Conformance,
186182/// specialize inherited conformances so that the concrete self type is correct, even for derived classes.
187183private func specializeDefaultMethods( for conformance: Conformance ,
188184 visited: inout Set < Conformance > ,
189- _ context: ModulePassContext ,
190- _ notifyNewWitnessTable: ( WitnessTable ) -> ( ) )
185+ _ context: ModulePassContext )
191186{
192187 // Avoid infinite recursion, which may happen if an associated conformance is the conformance itself.
193188 guard visited. insert ( conformance) . inserted,
@@ -224,21 +219,20 @@ private func specializeDefaultMethods(for conformance: Conformance,
224219 specialized = true
225220 return . method( requirement: requirement, witness: specializedMethod)
226221 case . baseProtocol( _, let witness) :
227- specializeDefaultMethods ( for: witness, visited: & visited, context, notifyNewWitnessTable )
222+ specializeDefaultMethods ( for: witness, visited: & visited, context)
228223 return origEntry
229224 case . associatedType:
230225 return origEntry
231226 case . associatedConformance( _, let assocConf) :
232- specializeDefaultMethods ( for: assocConf, visited: & visited, context, notifyNewWitnessTable )
227+ specializeDefaultMethods ( for: assocConf, visited: & visited, context)
233228 return origEntry
234229 }
235230 }
236231 // If the witness table does not contain any default methods, there is no need to create a
237232 // specialized witness table.
238233 if specialized {
239- let newWT = context. createSpecializedWitnessTable ( entries: newEntries, conformance: conformance,
240- linkage: . shared, serialized: false )
241- notifyNewWitnessTable ( newWT)
234+ context. createSpecializedWitnessTable ( entries: newEntries, conformance: conformance,
235+ linkage: . shared, serialized: false )
242236 }
243237}
244238
0 commit comments