@@ -128,7 +128,7 @@ extension ValueWitnessTable {
128
128
_ dest: UnsafeMutableRawPointer ,
129
129
_ src: UnsafeRawPointer
130
130
) -> UnsafeMutableRawPointer {
131
- let address = layout . raw
131
+ let address = address ( for : \ . initializeBufferWithCopyOfBuffer )
132
132
133
133
return address. signedVWTInitializeBufferWithCopyOfBuffer (
134
134
dest,
@@ -139,17 +139,7 @@ extension ValueWitnessTable {
139
139
140
140
@inlinable
141
141
public func destroy( _ src: UnsafeMutableRawPointer ) {
142
- // rdar://103834325
143
- // FIXME: There's currently a compiler bug preventing me from doing:
144
- // 'address(of: \.destroy)'
145
- // or even
146
- // 'MemoryLayout<ValueWitnessTable.Layout.Pointee>.offset(of: \.destroy)'
147
- //
148
- // The same goes for everything else in this file
149
- let address = layout. raw
150
- + MemoryLayout< InitializeBufferWithCopyOfBuffer> . size
151
-
152
- address. signedVWTDestroy ( src, trailing)
142
+ address ( for: \. destroy) . signedVWTDestroy ( src, trailing)
153
143
}
154
144
155
145
@inlinable
@@ -158,9 +148,7 @@ extension ValueWitnessTable {
158
148
_ dest: UnsafeMutableRawPointer ,
159
149
_ src: UnsafeRawPointer
160
150
) -> UnsafeMutableRawPointer {
161
- let address = layout. raw
162
- + MemoryLayout < InitializeBufferWithCopyOfBuffer > . size
163
- + MemoryLayout < Destroy > . size
151
+ let address = address ( for: \. initializeWithCopy)
164
152
165
153
return address. signedVWTInitializeWithCopy ( dest, src, trailing)
166
154
}
@@ -171,10 +159,7 @@ extension ValueWitnessTable {
171
159
_ dest: UnsafeMutableRawPointer ,
172
160
_ src: UnsafeRawPointer
173
161
) -> UnsafeMutableRawPointer {
174
- let address = layout. raw
175
- + MemoryLayout < InitializeBufferWithCopyOfBuffer > . size
176
- + MemoryLayout < Destroy > . size
177
- + MemoryLayout < InitializeWithCopy > . size
162
+ let address = address ( for: \. assignWithCopy)
178
163
179
164
return address. signedVWTAssignWithCopy ( dest, src, trailing)
180
165
}
@@ -185,11 +170,7 @@ extension ValueWitnessTable {
185
170
_ dest: UnsafeMutableRawPointer ,
186
171
_ src: UnsafeMutableRawPointer
187
172
) -> UnsafeMutableRawPointer {
188
- let address = layout. raw
189
- + MemoryLayout < InitializeBufferWithCopyOfBuffer > . size
190
- + MemoryLayout < Destroy > . size
191
- + MemoryLayout < InitializeWithCopy > . size
192
- + MemoryLayout < AssignWithCopy > . size
173
+ let address = address ( for: \. initializeWithTake)
193
174
194
175
return address. signedVWTInitializeWithTake ( dest, src, trailing)
195
176
}
@@ -200,12 +181,7 @@ extension ValueWitnessTable {
200
181
_ dest: UnsafeMutableRawPointer ,
201
182
_ src: UnsafeMutableRawPointer
202
183
) -> UnsafeMutableRawPointer {
203
- let address = layout. raw
204
- + MemoryLayout < InitializeBufferWithCopyOfBuffer > . size
205
- + MemoryLayout < Destroy > . size
206
- + MemoryLayout < InitializeWithCopy > . size
207
- + MemoryLayout < AssignWithCopy > . size
208
- + MemoryLayout < InitializeWithTake > . size
184
+ let address = address ( for: \. assignWithTake)
209
185
210
186
return address. signedVWTAssignWithTake ( dest, src, trailing)
211
187
}
@@ -216,13 +192,7 @@ extension ValueWitnessTable {
216
192
_ src: UnsafeRawPointer ,
217
193
_ numberOfEmptyCases: UInt32
218
194
) -> UInt32 {
219
- let address = layout. raw
220
- + MemoryLayout < InitializeBufferWithCopyOfBuffer > . size
221
- + MemoryLayout < Destroy > . size
222
- + MemoryLayout < InitializeWithCopy > . size
223
- + MemoryLayout < AssignWithCopy > . size
224
- + MemoryLayout < InitializeWithTake > . size
225
- + MemoryLayout < AssignWithTake > . size
195
+ let address = address ( for: \. getEnumTagSinglePayload)
226
196
227
197
return address. signedVWTGetEnumTagSinglePayload (
228
198
src,
@@ -237,14 +207,7 @@ extension ValueWitnessTable {
237
207
_ tag: UInt32 ,
238
208
_ numberOfEmptyCases: UInt32
239
209
) -> ( ) {
240
- let address = layout. raw
241
- + MemoryLayout < InitializeBufferWithCopyOfBuffer > . size
242
- + MemoryLayout < Destroy > . size
243
- + MemoryLayout < InitializeWithCopy > . size
244
- + MemoryLayout < AssignWithCopy > . size
245
- + MemoryLayout < InitializeWithTake > . size
246
- + MemoryLayout < AssignWithTake > . size
247
- + MemoryLayout < GetEnumTagSinglePayload > . size
210
+ let address = address ( for: \. storeEnumTagSinglePayload)
248
211
249
212
return address. signedVWTStoreEnumTagSinglePayload (
250
213
src,
0 commit comments