@@ -72,12 +72,6 @@ static inline bool isValidPointerForNativeRetain(const void *p) {
72
72
#endif
73
73
}
74
74
75
- HeapObject *swift::swift_allocObject (HeapMetadata const *metadata,
76
- size_t requiredSize,
77
- size_t requiredAlignmentMask) {
78
- return _swift_allocObject (metadata, requiredSize, requiredAlignmentMask);
79
- }
80
-
81
75
static HeapObject *_swift_allocObject_ (HeapMetadata const *metadata,
82
76
size_t requiredSize,
83
77
size_t requiredAlignmentMask) {
@@ -98,7 +92,18 @@ static HeapObject *_swift_allocObject_(HeapMetadata const *metadata,
98
92
return object;
99
93
}
100
94
101
- auto swift::_swift_allocObject = _swift_allocObject_;
95
+ HeapObject *swift::swift_allocObject (HeapMetadata const *metadata,
96
+ size_t requiredSize,
97
+ size_t requiredAlignmentMask) {
98
+ if (SWIFT_UNLIKELY (_swift_allocObject != _swift_allocObject_))
99
+ return _swift_allocObject (metadata, requiredSize, requiredAlignmentMask);
100
+ return _swift_allocObject_ (metadata, requiredSize, requiredAlignmentMask);
101
+ }
102
+
103
+ HeapObject *(*swift::_swift_allocObject)(HeapMetadata const *metadata,
104
+ size_t requiredSize,
105
+ size_t requiredAlignmentMask) =
106
+ _swift_allocObject_;
102
107
103
108
HeapObject *
104
109
swift::swift_initStackObject (HeapMetadata const *metadata,
@@ -292,18 +297,20 @@ HeapObject *swift::swift_allocEmptyBox() {
292
297
extern " C" LLVM_LIBRARY_VISIBILITY LLVM_ATTRIBUTE_NOINLINE LLVM_ATTRIBUTE_USED
293
298
void _swift_release_dealloc (HeapObject *object);
294
299
295
- HeapObject *swift::swift_retain (HeapObject *object) {
296
- return _swift_retain (object);
297
- }
298
-
299
300
static HeapObject *_swift_retain_ (HeapObject *object) {
300
301
SWIFT_RT_TRACK_INVOCATION (object, swift_retain);
301
302
if (isValidPointerForNativeRetain (object))
302
303
object->refCounts .increment (1 );
303
304
return object;
304
305
}
305
306
306
- auto swift::_swift_retain = _swift_retain_;
307
+ HeapObject *swift::swift_retain (HeapObject *object) {
308
+ if (SWIFT_UNLIKELY (_swift_retain != _swift_retain_))
309
+ return _swift_retain (object);
310
+ return _swift_retain_ (object);
311
+ }
312
+
313
+ HeapObject *(*swift::_swift_retain)(HeapObject *object) = _swift_retain_;
307
314
308
315
HeapObject *swift::swift_nonatomic_retain (HeapObject *object) {
309
316
SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_retain);
@@ -312,18 +319,21 @@ HeapObject *swift::swift_nonatomic_retain(HeapObject *object) {
312
319
return object;
313
320
}
314
321
315
- HeapObject *swift::swift_retain_n (HeapObject *object, uint32_t n) {
316
- return _swift_retain_n (object, n);
317
- }
318
-
319
322
static HeapObject *_swift_retain_n_ (HeapObject *object, uint32_t n) {
320
323
SWIFT_RT_TRACK_INVOCATION (object, swift_retain_n);
321
324
if (isValidPointerForNativeRetain (object))
322
325
object->refCounts .increment (n);
323
326
return object;
324
327
}
325
328
326
- auto swift::_swift_retain_n = _swift_retain_n_;
329
+ HeapObject *swift::swift_retain_n (HeapObject *object, uint32_t n) {
330
+ if (SWIFT_UNLIKELY (_swift_retain_n != _swift_retain_n_))
331
+ return _swift_retain_n (object, n);
332
+ return _swift_retain_n_ (object, n);
333
+ }
334
+
335
+ HeapObject *(*swift::_swift_retain_n)(HeapObject *object, uint32_t n) =
336
+ _swift_retain_n_;
327
337
328
338
HeapObject *swift::swift_nonatomic_retain_n (HeapObject *object, uint32_t n) {
329
339
SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_retain_n);
@@ -332,35 +342,40 @@ HeapObject *swift::swift_nonatomic_retain_n(HeapObject *object, uint32_t n) {
332
342
return object;
333
343
}
334
344
335
- void swift::swift_release (HeapObject *object) {
336
- _swift_release (object);
337
- }
338
-
339
345
static void _swift_release_ (HeapObject *object) {
340
346
SWIFT_RT_TRACK_INVOCATION (object, swift_release);
341
347
if (isValidPointerForNativeRetain (object))
342
348
object->refCounts .decrementAndMaybeDeinit (1 );
343
349
}
344
350
345
- auto swift::_swift_release = _swift_release_;
351
+ void swift::swift_release (HeapObject *object) {
352
+ if (SWIFT_UNLIKELY (_swift_release != _swift_release_))
353
+ _swift_release (object);
354
+ _swift_release_ (object);
355
+ }
356
+
357
+ void (*swift::_swift_release)(HeapObject *object) = _swift_release_;
346
358
347
359
void swift::swift_nonatomic_release (HeapObject *object) {
348
360
SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_release);
349
361
if (isValidPointerForNativeRetain (object))
350
362
object->refCounts .decrementAndMaybeDeinitNonAtomic (1 );
351
363
}
352
364
353
- void swift::swift_release_n (HeapObject *object, uint32_t n) {
354
- return _swift_release_n (object, n);
355
- }
356
-
357
365
static void _swift_release_n_ (HeapObject *object, uint32_t n) {
358
366
SWIFT_RT_TRACK_INVOCATION (object, swift_release_n);
359
367
if (isValidPointerForNativeRetain (object))
360
368
object->refCounts .decrementAndMaybeDeinit (n);
361
369
}
362
370
363
- auto swift::_swift_release_n = _swift_release_n_;
371
+ void swift::swift_release_n (HeapObject *object, uint32_t n) {
372
+ if (SWIFT_UNLIKELY (_swift_release_n != _swift_release_n_))
373
+ return _swift_release_n (object, n);
374
+ return _swift_release_n_ (object, n);
375
+ }
376
+
377
+ void (*swift::_swift_release_n)(HeapObject *object, uint32_t n) =
378
+ _swift_release_n_;
364
379
365
380
void swift::swift_nonatomic_release_n (HeapObject *object, uint32_t n) {
366
381
SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_release_n);
@@ -484,10 +499,6 @@ void swift::swift_nonatomic_unownedRelease_n(HeapObject *object, int n) {
484
499
}
485
500
}
486
501
487
- HeapObject *swift::swift_tryRetain (HeapObject *object) {
488
- return _swift_tryRetain (object);
489
- }
490
-
491
502
static HeapObject *_swift_tryRetain_ (HeapObject *object) {
492
503
SWIFT_RT_TRACK_INVOCATION (object, swift_tryRetain);
493
504
if (!isValidPointerForNativeRetain (object))
@@ -497,7 +508,13 @@ static HeapObject *_swift_tryRetain_(HeapObject *object) {
497
508
else return nullptr ;
498
509
}
499
510
500
- auto swift::_swift_tryRetain = _swift_tryRetain_;
511
+ HeapObject *swift::swift_tryRetain (HeapObject *object) {
512
+ if (SWIFT_UNLIKELY (_swift_tryRetain != _swift_tryRetain_))
513
+ return _swift_tryRetain (object);
514
+ return _swift_tryRetain_ (object);
515
+ }
516
+
517
+ HeapObject *(*swift::_swift_tryRetain)(HeapObject *object) = _swift_tryRetain_;
501
518
502
519
bool swift::swift_isDeallocating (HeapObject *object) {
503
520
if (!isValidPointerForNativeRetain (object))
0 commit comments