@@ -336,7 +336,11 @@ static HeapObject *_swift_retain_(HeapObject *object) {
336336}
337337
338338HeapObject *swift::swift_retain (HeapObject *object) {
339+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
340+ return swift_nonatomic_retain (object);
341+ #else
339342 CALL_IMPL (swift_retain, (object));
343+ #endif
340344}
341345
342346SWIFT_RUNTIME_EXPORT
@@ -358,7 +362,11 @@ static HeapObject *_swift_retain_n_(HeapObject *object, uint32_t n) {
358362}
359363
360364HeapObject *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
361368 CALL_IMPL (swift_retain_n, (object, n));
369+ #endif
362370}
363371
364372SWIFT_RUNTIME_EXPORT
@@ -379,7 +387,11 @@ static void _swift_release_(HeapObject *object) {
379387}
380388
381389void swift::swift_release (HeapObject *object) {
390+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
391+ swift_nonatomic_release (object);
392+ #else
382393 CALL_IMPL (swift_release, (object));
394+ #endif
383395}
384396
385397SWIFT_RUNTIME_EXPORT
@@ -399,7 +411,11 @@ static void _swift_release_n_(HeapObject *object, uint32_t n) {
399411}
400412
401413void 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
402417 CALL_IMPL (swift_release_n, (object, n));
418+ #endif
403419}
404420
405421SWIFT_RUNTIME_EXPORT
@@ -427,15 +443,22 @@ size_t swift::swift_weakRetainCount(HeapObject *object) {
427443}
428444
429445HeapObject *swift::swift_unownedRetain (HeapObject *object) {
446+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
447+ return static_cast <HeapObject *>(swift_nonatomic_unownedRetain (object));
448+ #else
430449 SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRetain);
431450 if (!isValidPointerForNativeRetain (object))
432451 return object;
433452
434453 object->refCounts .incrementUnowned (1 );
435454 return object;
455+ #endif
436456}
437457
438458void swift::swift_unownedRelease (HeapObject *object) {
459+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
460+ swift_nonatomic_unownedRelease (object);
461+ #else
439462 SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRelease);
440463 if (!isValidPointerForNativeRetain (object))
441464 return ;
@@ -450,6 +473,7 @@ void swift::swift_unownedRelease(HeapObject *object) {
450473 swift_slowDealloc (object, classMetadata->getInstanceSize (),
451474 classMetadata->getInstanceAlignMask ());
452475 }
476+ #endif
453477}
454478
455479void *swift::swift_nonatomic_unownedRetain (HeapObject *object) {
@@ -479,15 +503,22 @@ void swift::swift_nonatomic_unownedRelease(HeapObject *object) {
479503}
480504
481505HeapObject *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
482509 SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRetain_n);
483510 if (!isValidPointerForNativeRetain (object))
484511 return object;
485512
486513 object->refCounts .incrementUnowned (n);
487514 return object;
515+ #endif
488516}
489517
490518void swift::swift_unownedRelease_n (HeapObject *object, int n) {
519+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
520+ swift_nonatomic_unownedRelease_n (object, n);
521+ #else
491522 SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRelease_n);
492523 if (!isValidPointerForNativeRetain (object))
493524 return ;
@@ -501,6 +532,7 @@ void swift::swift_unownedRelease_n(HeapObject *object, int n) {
501532 swift_slowDealloc (object, classMetadata->getInstanceSize (),
502533 classMetadata->getInstanceAlignMask ());
503534 }
535+ #endif
504536}
505537
506538HeapObject *swift::swift_nonatomic_unownedRetain_n (HeapObject *object, int n) {
@@ -533,8 +565,13 @@ static HeapObject *_swift_tryRetain_(HeapObject *object) {
533565 if (!isValidPointerForNativeRetain (object))
534566 return nullptr ;
535567
568+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
569+ if (object->refCounts .tryIncrementNonAtomic ()) return object;
570+ else return nullptr ;
571+ #else
536572 if (object->refCounts .tryIncrement ()) return object;
537573 else return nullptr ;
574+ #endif
538575}
539576
540577HeapObject *swift::swift_tryRetain (HeapObject *object) {
@@ -557,6 +594,9 @@ void swift::swift_setDeallocating(HeapObject *object) {
557594}
558595
559596HeapObject *swift::swift_unownedRetainStrong (HeapObject *object) {
597+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
598+ return swift_nonatomic_unownedRetainStrong (object);
599+ #else
560600 SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRetainStrong);
561601 if (!isValidPointerForNativeRetain (object))
562602 return object;
@@ -566,6 +606,7 @@ HeapObject *swift::swift_unownedRetainStrong(HeapObject *object) {
566606 if (! object->refCounts .tryIncrement ())
567607 swift::swift_abortRetainUnowned (object);
568608 return object;
609+ #endif
569610}
570611
571612HeapObject *swift::swift_nonatomic_unownedRetainStrong (HeapObject *object) {
@@ -581,6 +622,9 @@ HeapObject *swift::swift_nonatomic_unownedRetainStrong(HeapObject *object) {
581622}
582623
583624void swift::swift_unownedRetainStrongAndRelease (HeapObject *object) {
625+ #ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
626+ swift_nonatomic_unownedRetainStrongAndRelease (object);
627+ #else
584628 SWIFT_RT_TRACK_INVOCATION (object, swift_unownedRetainStrongAndRelease);
585629 if (!isValidPointerForNativeRetain (object))
586630 return ;
@@ -594,6 +638,7 @@ void swift::swift_unownedRetainStrongAndRelease(HeapObject *object) {
594638 bool dealloc = object->refCounts .decrementUnownedShouldFree (1 );
595639 assert (!dealloc && " retain-strong-and-release caused dealloc?" );
596640 (void ) dealloc;
641+ #endif
597642}
598643
599644void swift::swift_nonatomic_unownedRetainStrongAndRelease (HeapObject *object) {
0 commit comments