[Build][Runtime] Replace SWIFT_STDLIB_SINGLE_THREADED_RUNTIME.

SWIFT_STDLIB_SINGLE_THREADED_RUNTIME is too much of a blunt instrument here.
It covers both the Concurrency runtime and the rest of the runtime, but we'd
like to be able to have e.g. a single-threaded Concurrency runtime while
the rest of the runtime is still thread safe (for instance).

So: rename it to SWIFT_STDLIB_SINGLE_THREADED_CONCURRENCY and make it just
control the Concurrency runtime, then add a SWIFT_STDLIB_THREADING_PACKAGE
setting at the CMake/build-script level, which defines
SWIFT_STDLIB_THREADING_xxx where xxx depends on the chosen threading package.

This is especially useful on systems where there may be a choice of threading
package that you could use.

rdar://90776105
This commit is contained in:
Alastair Houghton
2022-03-25 16:10:39 +00:00
parent 3c0b1ab03f
commit dadcb04ae2
44 changed files with 547 additions and 204 deletions

View File

@@ -350,7 +350,7 @@ static HeapObject *_swift_retain_(HeapObject *object) {
}
HeapObject *swift::swift_retain(HeapObject *object) {
#ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
#ifdef SWIFT_STDLIB_THREADING_NONE
return swift_nonatomic_retain(object);
#else
CALL_IMPL(swift_retain, (object));
@@ -377,7 +377,7 @@ static HeapObject *_swift_retain_n_(HeapObject *object, uint32_t n) {
}
HeapObject *swift::swift_retain_n(HeapObject *object, uint32_t n) {
#ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
#ifdef SWIFT_STDLIB_THREADING_NONE
return swift_nonatomic_retain_n(object, n);
#else
CALL_IMPL(swift_retain_n, (object, n));
@@ -403,7 +403,7 @@ static void _swift_release_(HeapObject *object) {
}
void swift::swift_release(HeapObject *object) {
#ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
#ifdef SWIFT_STDLIB_THREADING_NONE
swift_nonatomic_release(object);
#else
CALL_IMPL(swift_release, (object));
@@ -428,7 +428,7 @@ static void _swift_release_n_(HeapObject *object, uint32_t n) {
}
void swift::swift_release_n(HeapObject *object, uint32_t n) {
#ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
#ifdef SWIFT_STDLIB_THREADING_NONE
swift_nonatomic_release_n(object, n);
#else
CALL_IMPL(swift_release_n, (object, n));
@@ -460,7 +460,7 @@ size_t swift::swift_weakRetainCount(HeapObject *object) {
}
HeapObject *swift::swift_unownedRetain(HeapObject *object) {
#ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
#ifdef SWIFT_STDLIB_THREADING_NONE
return static_cast<HeapObject *>(swift_nonatomic_unownedRetain(object));
#else
SWIFT_RT_TRACK_INVOCATION(object, swift_unownedRetain);
@@ -473,7 +473,7 @@ HeapObject *swift::swift_unownedRetain(HeapObject *object) {
}
void swift::swift_unownedRelease(HeapObject *object) {
#ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
#ifdef SWIFT_STDLIB_THREADING_NONE
swift_nonatomic_unownedRelease(object);
#else
SWIFT_RT_TRACK_INVOCATION(object, swift_unownedRelease);
@@ -520,7 +520,7 @@ void swift::swift_nonatomic_unownedRelease(HeapObject *object) {
}
HeapObject *swift::swift_unownedRetain_n(HeapObject *object, int n) {
#ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
#ifdef SWIFT_STDLIB_THREADING_NONE
return swift_nonatomic_unownedRetain_n(object, n);
#else
SWIFT_RT_TRACK_INVOCATION(object, swift_unownedRetain_n);
@@ -533,7 +533,7 @@ HeapObject *swift::swift_unownedRetain_n(HeapObject *object, int n) {
}
void swift::swift_unownedRelease_n(HeapObject *object, int n) {
#ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
#ifdef SWIFT_STDLIB_THREADING_NONE
swift_nonatomic_unownedRelease_n(object, n);
#else
SWIFT_RT_TRACK_INVOCATION(object, swift_unownedRelease_n);
@@ -583,7 +583,7 @@ static HeapObject *_swift_tryRetain_(HeapObject *object) {
if (!isValidPointerForNativeRetain(object))
return nullptr;
#ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
#ifdef SWIFT_STDLIB_THREADING_NONE
if (object->refCounts.tryIncrementNonAtomic()) return object;
else return nullptr;
#else
@@ -612,7 +612,7 @@ void swift::swift_setDeallocating(HeapObject *object) {
}
HeapObject *swift::swift_unownedRetainStrong(HeapObject *object) {
#ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
#ifdef SWIFT_STDLIB_THREADING_NONE
return swift_nonatomic_unownedRetainStrong(object);
#else
SWIFT_RT_TRACK_INVOCATION(object, swift_unownedRetainStrong);
@@ -640,7 +640,7 @@ HeapObject *swift::swift_nonatomic_unownedRetainStrong(HeapObject *object) {
}
void swift::swift_unownedRetainStrongAndRelease(HeapObject *object) {
#ifdef SWIFT_STDLIB_SINGLE_THREADED_RUNTIME
#ifdef SWIFT_STDLIB_THREADING_NONE
swift_nonatomic_unownedRetainStrongAndRelease(object);
#else
SWIFT_RT_TRACK_INVOCATION(object, swift_unownedRetainStrongAndRelease);