@@ -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))
99
+ return _swift_allocObject (metadata, requiredSize, requiredAlignmentMask);
100
+ else
101
+ return _swift_allocObject_ (metadata, requiredSize, requiredAlignmentMask);
102
+ }
103
+
104
+ HeapObject *(*swift::_swift_allocObject)(HeapMetadata const *metadata,
105
+ size_t requiredSize,
106
+ size_t requiredAlignmentMask);
102
107
103
108
HeapObject *
104
109
swift::swift_initStackObject (HeapMetadata const *metadata,
@@ -292,18 +297,21 @@ 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))
309
+ return _swift_retain (object);
310
+ else
311
+ return _swift_retain_ (object);
312
+ }
313
+
314
+ HeapObject *(*swift::_swift_retain)(HeapObject *object);
307
315
308
316
HeapObject *swift::swift_nonatomic_retain (HeapObject *object) {
309
317
SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_retain);
@@ -312,18 +320,21 @@ HeapObject *swift::swift_nonatomic_retain(HeapObject *object) {
312
320
return object;
313
321
}
314
322
315
- HeapObject *swift::swift_retain_n (HeapObject *object, uint32_t n) {
316
- return _swift_retain_n (object, n);
317
- }
318
-
319
323
static HeapObject *_swift_retain_n_ (HeapObject *object, uint32_t n) {
320
324
SWIFT_RT_TRACK_INVOCATION (object, swift_retain_n);
321
325
if (isValidPointerForNativeRetain (object))
322
326
object->refCounts .increment (n);
323
327
return object;
324
328
}
325
329
326
- auto swift::_swift_retain_n = _swift_retain_n_;
330
+ HeapObject *swift::swift_retain_n (HeapObject *object, uint32_t n) {
331
+ if (SWIFT_UNLIKELY (_swift_retain_n))
332
+ return _swift_retain_n (object, n);
333
+ else
334
+ return _swift_retain_n_ (object, n);
335
+ }
336
+
337
+ HeapObject *(*swift::_swift_retain_n)(HeapObject *object, uint32_t n);
327
338
328
339
HeapObject *swift::swift_nonatomic_retain_n (HeapObject *object, uint32_t n) {
329
340
SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_retain_n);
@@ -332,35 +343,41 @@ HeapObject *swift::swift_nonatomic_retain_n(HeapObject *object, uint32_t n) {
332
343
return object;
333
344
}
334
345
335
- void swift::swift_release (HeapObject *object) {
336
- _swift_release (object);
337
- }
338
-
339
346
static void _swift_release_ (HeapObject *object) {
340
347
SWIFT_RT_TRACK_INVOCATION (object, swift_release);
341
348
if (isValidPointerForNativeRetain (object))
342
349
object->refCounts .decrementAndMaybeDeinit (1 );
343
350
}
344
351
345
- auto swift::_swift_release = _swift_release_;
352
+ void swift::swift_release (HeapObject *object) {
353
+ if (SWIFT_UNLIKELY (_swift_release))
354
+ _swift_release (object);
355
+ else
356
+ _swift_release_ (object);
357
+ }
358
+
359
+ void (*swift::_swift_release)(HeapObject *object);
346
360
347
361
void swift::swift_nonatomic_release (HeapObject *object) {
348
362
SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_release);
349
363
if (isValidPointerForNativeRetain (object))
350
364
object->refCounts .decrementAndMaybeDeinitNonAtomic (1 );
351
365
}
352
366
353
- void swift::swift_release_n (HeapObject *object, uint32_t n) {
354
- return _swift_release_n (object, n);
355
- }
356
-
357
367
static void _swift_release_n_ (HeapObject *object, uint32_t n) {
358
368
SWIFT_RT_TRACK_INVOCATION (object, swift_release_n);
359
369
if (isValidPointerForNativeRetain (object))
360
370
object->refCounts .decrementAndMaybeDeinit (n);
361
371
}
362
372
363
- auto swift::_swift_release_n = _swift_release_n_;
373
+ void swift::swift_release_n (HeapObject *object, uint32_t n) {
374
+ if (SWIFT_UNLIKELY (_swift_release_n))
375
+ return _swift_release_n (object, n);
376
+ else
377
+ return _swift_release_n_ (object, n);
378
+ }
379
+
380
+ void (*swift::_swift_release_n)(HeapObject *object, uint32_t n);
364
381
365
382
void swift::swift_nonatomic_release_n (HeapObject *object, uint32_t n) {
366
383
SWIFT_RT_TRACK_INVOCATION (object, swift_nonatomic_release_n);
@@ -484,10 +501,6 @@ void swift::swift_nonatomic_unownedRelease_n(HeapObject *object, int n) {
484
501
}
485
502
}
486
503
487
- HeapObject *swift::swift_tryRetain (HeapObject *object) {
488
- return _swift_tryRetain (object);
489
- }
490
-
491
504
static HeapObject *_swift_tryRetain_ (HeapObject *object) {
492
505
SWIFT_RT_TRACK_INVOCATION (object, swift_tryRetain);
493
506
if (!isValidPointerForNativeRetain (object))
@@ -497,7 +510,14 @@ static HeapObject *_swift_tryRetain_(HeapObject *object) {
497
510
else return nullptr ;
498
511
}
499
512
500
- auto swift::_swift_tryRetain = _swift_tryRetain_;
513
+ HeapObject *swift::swift_tryRetain (HeapObject *object) {
514
+ if (SWIFT_UNLIKELY (_swift_tryRetain))
515
+ return _swift_tryRetain (object);
516
+ else
517
+ return _swift_tryRetain_ (object);
518
+ }
519
+
520
+ HeapObject *(*swift::_swift_tryRetain)(HeapObject *object);
501
521
502
522
bool swift::swift_isDeallocating (HeapObject *object) {
503
523
if (!isValidPointerForNativeRetain (object))
0 commit comments