@@ -336,7 +336,11 @@ static HeapObject *_swift_retain_(HeapObject *object) {
336
336
}
337
337
338
338
HeapObject *swift::swift_retain (HeapObject *object) {
339
+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
340
+ return swift_nonatomic_retain (object);
341
+ #else
339
342
CALL_IMPL (swift_retain, (object));
343
+ #endif
340
344
}
341
345
342
346
SWIFT_RUNTIME_EXPORT
@@ -358,7 +362,11 @@ static HeapObject *_swift_retain_n_(HeapObject *object, uint32_t n) {
358
362
}
359
363
360
364
HeapObject *swift::swift_retain_n (HeapObject *object, uint32_t n) {
365
+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
366
+ return swift_nonatomic_retain_n (object, n);
367
+ #else
361
368
CALL_IMPL (swift_retain_n, (object, n));
369
+ #endif
362
370
}
363
371
364
372
SWIFT_RUNTIME_EXPORT
@@ -379,7 +387,11 @@ static void _swift_release_(HeapObject *object) {
379
387
}
380
388
381
389
void swift::swift_release (HeapObject *object) {
390
+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
391
+ swift_nonatomic_release (object);
392
+ #else
382
393
CALL_IMPL (swift_release, (object));
394
+ #endif
383
395
}
384
396
385
397
SWIFT_RUNTIME_EXPORT
@@ -399,7 +411,11 @@ static void _swift_release_n_(HeapObject *object, uint32_t n) {
399
411
}
400
412
401
413
void swift::swift_release_n (HeapObject *object, uint32_t n) {
414
+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
415
+ swift_nonatomic_release_n (object, n);
416
+ #else
402
417
CALL_IMPL (swift_release_n, (object, n));
418
+ #endif
403
419
}
404
420
405
421
SWIFT_RUNTIME_EXPORT
@@ -427,15 +443,22 @@ size_t swift::swift_weakRetainCount(HeapObject *object) {
427
443
}
428
444
429
445
HeapObject *swift::swift_unownedRetain (HeapObject *object) {
446
+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
447
+ return static_cast <HeapObject *>(swift_nonatomic_unownedRetain (object));
448
+ #else
430
449
SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRetain);
431
450
if (!isValidPointerForNativeRetain (object))
432
451
return object;
433
452
434
453
object->refCounts .incrementUnowned (1 );
435
454
return object;
455
+ #endif
436
456
}
437
457
438
458
void swift::swift_unownedRelease (HeapObject *object) {
459
+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
460
+ swift_nonatomic_unownedRelease (object);
461
+ #else
439
462
SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRelease);
440
463
if (!isValidPointerForNativeRetain (object))
441
464
return ;
@@ -450,6 +473,7 @@ void swift::swift_unownedRelease(HeapObject *object) {
450
473
swift_slowDealloc (object, classMetadata->getInstanceSize (),
451
474
classMetadata->getInstanceAlignMask ());
452
475
}
476
+ #endif
453
477
}
454
478
455
479
void *swift::swift_nonatomic_unownedRetain (HeapObject *object) {
@@ -479,15 +503,22 @@ void swift::swift_nonatomic_unownedRelease(HeapObject *object) {
479
503
}
480
504
481
505
HeapObject *swift::swift_unownedRetain_n (HeapObject *object, int n) {
506
+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
507
+ return swift_nonatomic_unownedRetain_n (object, n);
508
+ #else
482
509
SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRetain_n);
483
510
if (!isValidPointerForNativeRetain (object))
484
511
return object;
485
512
486
513
object->refCounts .incrementUnowned (n);
487
514
return object;
515
+ #endif
488
516
}
489
517
490
518
void swift::swift_unownedRelease_n (HeapObject *object, int n) {
519
+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
520
+ swift_nonatomic_unownedRelease_n (object, n);
521
+ #else
491
522
SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRelease_n);
492
523
if (!isValidPointerForNativeRetain (object))
493
524
return ;
@@ -501,6 +532,7 @@ void swift::swift_unownedRelease_n(HeapObject *object, int n) {
501
532
swift_slowDealloc (object, classMetadata->getInstanceSize (),
502
533
classMetadata->getInstanceAlignMask ());
503
534
}
535
+ #endif
504
536
}
505
537
506
538
HeapObject *swift::swift_nonatomic_unownedRetain_n (HeapObject *object, int n) {
@@ -533,8 +565,13 @@ static HeapObject *_swift_tryRetain_(HeapObject *object) {
533
565
if (!isValidPointerForNativeRetain (object))
534
566
return nullptr ;
535
567
568
+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
569
+ if (object->refCounts .tryIncrementNonAtomic ()) return object;
570
+ else return nullptr ;
571
+ #else
536
572
if (object->refCounts .tryIncrement ()) return object;
537
573
else return nullptr ;
574
+ #endif
538
575
}
539
576
540
577
HeapObject *swift::swift_tryRetain (HeapObject *object) {
@@ -557,6 +594,9 @@ void swift::swift_setDeallocating(HeapObject *object) {
557
594
}
558
595
559
596
HeapObject *swift::swift_unownedRetainStrong (HeapObject *object) {
597
+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
598
+ return swift_nonatomic_unownedRetainStrong (object);
599
+ #else
560
600
SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRetainStrong);
561
601
if (!isValidPointerForNativeRetain (object))
562
602
return object;
@@ -566,6 +606,7 @@ HeapObject *swift::swift_unownedRetainStrong(HeapObject *object) {
566
606
if (! object->refCounts .tryIncrement ())
567
607
swift::swift_abortRetainUnowned (object);
568
608
return object;
609
+ #endif
569
610
}
570
611
571
612
HeapObject *swift::swift_nonatomic_unownedRetainStrong (HeapObject *object) {
@@ -581,6 +622,9 @@ HeapObject *swift::swift_nonatomic_unownedRetainStrong(HeapObject *object) {
581
622
}
582
623
583
624
void swift::swift_unownedRetainStrongAndRelease (HeapObject *object) {
625
+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
626
+ swift_nonatomic_unownedRetainStrongAndRelease (object);
627
+ #else
584
628
SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRetainStrongAndRelease);
585
629
if (!isValidPointerForNativeRetain (object))
586
630
return ;
@@ -594,6 +638,7 @@ void swift::swift_unownedRetainStrongAndRelease(HeapObject *object) {
594
638
bool dealloc = object->refCounts .decrementUnownedShouldFree (1 );
595
639
assert (!dealloc && " retain-strong-and-release caused dealloc?" );
596
640
(void ) dealloc;
641
+ #endif
597
642
}
598
643
599
644
void swift::swift_nonatomic_unownedRetainStrongAndRelease (HeapObject *object) {
0 commit comments