Skip to content

Commit 959e75b

Browse files
committed
Enable MainActor in embedded concurrency, add ExecutorImpl.cpp
`ExecutorImpl.cpp` should be moved from `SWIFT_RUNTIME_CONCURRENCY_NONEMBEDDED_C_SOURCES` to `SWIFT_RUNTIME_CONCURRENCY_C_SOURCES`. This way we can also include `ExecutorImpl.swift` and use `PlatformExecutorCooperative.swift` in embedded concurrency for WASI.
1 parent 04726c0 commit 959e75b

File tree

4 files changed

+19
-16
lines changed

4 files changed

+19
-16
lines changed

stdlib/public/Concurrency/CMakeLists.txt

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,13 @@ set(SWIFT_RUNTIME_CONCURRENCY_C_SOURCES
7878
Actor.cpp
7979
AsyncLet.cpp
8080
Clock.cpp
81-
GlobalExecutor.cpp
8281
ConcurrencyHooks.cpp
82+
GlobalExecutor.cpp
8383
EmbeddedSupport.cpp
8484
Error.cpp
8585
ExecutorBridge.cpp
8686
ExecutorChecks.cpp
87+
ExecutorImpl.cpp
8788
Task.cpp
8889
TaskAlloc.cpp
8990
TaskStatus.cpp
@@ -168,12 +169,10 @@ set(SWIFT_RUNTIME_CONCURRENCY_SWIFT_SOURCES
168169
PlatformExecutorFreeBSD.swift
169170
)
170171

171-
set(SWIFT_RUNTIME_CONCURRENCY_NONEMBEDDED_C_SOURCES
172-
ExecutorImpl.cpp
173-
)
174-
175172
set(SWIFT_RUNTIME_CONCURRENCY_EXECUTOR_SOURCES)
176173
set(SWIFT_RUNTIME_CONCURRENCY_NONEMBEDDED_SWIFT_SOURCES)
174+
set(SWIFT_RUNTIME_CONCURRENCY_NONEMBEDDED_C_SOURCES
175+
)
177176

178177
if("${SWIFT_CONCURRENCY_GLOBAL_EXECUTOR}" STREQUAL "dispatch")
179178
set(SWIFT_RUNTIME_CONCURRENCY_EXECUTOR_SOURCES
@@ -196,10 +195,6 @@ else()
196195
)
197196
endif()
198197

199-
set(SWIFT_RUNTIME_CONCURRENCY_EMBEDDED_SWIFT_SOURCES
200-
PlatformExecutorNone.swift
201-
)
202-
203198
set(LLVM_OPTIONAL_SOURCES
204199
DispatchGlobalExecutor.cpp
205200
CooperativeGlobalExecutor.cpp
@@ -315,6 +310,19 @@ if(SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB AND SWIFT_SHOULD_BUILD_EMBEDDED_CONCURRENC
315310
endif()
316311
endif()
317312

313+
if("${arch}" MATCHES "wasm32")
314+
set(SWIFT_RUNTIME_CONCURRENCY_EMBEDDED_SWIFT_SOURCES
315+
ExecutorImpl.swift
316+
PlatformExecutorCooperative.swift
317+
)
318+
else()
319+
set(SWIFT_RUNTIME_CONCURRENCY_EMBEDDED_SWIFT_SOURCES
320+
ExecutorImpl.swift
321+
PlatformExecutorNone.swift
322+
)
323+
endif()
324+
325+
318326
set(SWIFT_SDK_embedded_THREADING_PACKAGE none)
319327
set(SWIFT_SDK_embedded_ARCH_${arch}_MODULE "${mod}")
320328
set(SWIFT_SDK_embedded_ARCH_${mod}_MODULE "${mod}")

stdlib/public/Concurrency/Executor.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ func _createDefaultExecutors() {
610610
}
611611
}
612612

613-
#if !$Embedded && !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
613+
#if !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
614614
extension MainActor {
615615
@available(StdlibDeploymentTarget 6.2, *)
616616
static var _executor: (any MainExecutor)? = nil
@@ -627,7 +627,7 @@ extension MainActor {
627627
return _executor!
628628
}
629629
}
630-
#endif // !$Embedded && !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
630+
#endif // !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
631631

632632
extension Task where Success == Never, Failure == Never {
633633
@available(StdlibDeploymentTarget 6.2, *)

stdlib/public/Concurrency/ExecutorBridge.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ internal func _jobGetExecutorPrivateData(
9191
_ job: Builtin.Job
9292
) -> UnsafeMutableRawPointer
9393

94-
#if !$Embedded
9594
#if !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
9695
@available(StdlibDeploymentTarget 6.2, *)
9796
@_silgen_name("swift_getMainExecutor")
@@ -104,7 +103,6 @@ internal func _getMainExecutorAsSerialExecutor() -> (any SerialExecutor)? {
104103
@_silgen_name("swift_getMainExecutor")
105104
internal func _getMainExecutorAsSerialExecutor() -> (any SerialExecutor)?
106105
#endif // SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
107-
#endif // !$Embedded
108106

109107
@available(StdlibDeploymentTarget 6.2, *)
110108
@_silgen_name("swift_dispatchMain")

stdlib/public/Concurrency/MainActor.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212

1313
import Swift
1414

15-
#if !$Embedded
16-
1715
#if SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
1816
@available(SwiftStdlib 5.1, *)
1917
@available(*, unavailable, message: "Unavailable in task-to-thread concurrency model")
@@ -197,4 +195,3 @@ public func _deinitOnExecutorMainActorBackDeploy(
197195

198196
#endif // !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
199197

200-
#endif // !$Embedded

0 commit comments

Comments
 (0)