Skip to content

Commit 1bd782a

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 665515c commit 1bd782a

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
@@ -76,12 +76,13 @@ set(SWIFT_RUNTIME_CONCURRENCY_C_SOURCES
7676
Actor.cpp
7777
AsyncLet.cpp
7878
Clock.cpp
79-
GlobalExecutor.cpp
8079
ConcurrencyHooks.cpp
80+
GlobalExecutor.cpp
8181
EmbeddedSupport.cpp
8282
Error.cpp
8383
ExecutorBridge.cpp
8484
ExecutorChecks.cpp
85+
ExecutorImpl.cpp
8586
Setup.cpp
8687
Task.cpp
8788
TaskAlloc.cpp
@@ -167,12 +168,10 @@ set(SWIFT_RUNTIME_CONCURRENCY_SWIFT_SOURCES
167168
PlatformExecutorFreeBSD.swift
168169
)
169170

170-
set(SWIFT_RUNTIME_CONCURRENCY_NONEMBEDDED_C_SOURCES
171-
ExecutorImpl.cpp
172-
)
173-
174171
set(SWIFT_RUNTIME_CONCURRENCY_EXECUTOR_SOURCES)
175172
set(SWIFT_RUNTIME_CONCURRENCY_NONEMBEDDED_SWIFT_SOURCES)
173+
set(SWIFT_RUNTIME_CONCURRENCY_NONEMBEDDED_C_SOURCES
174+
)
176175

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

198-
set(SWIFT_RUNTIME_CONCURRENCY_EMBEDDED_SWIFT_SOURCES
199-
PlatformExecutorNone.swift
200-
)
201-
202197
set(LLVM_OPTIONAL_SOURCES
203198
DispatchGlobalExecutor.cpp
204199
CooperativeGlobalExecutor.cpp
@@ -314,6 +309,19 @@ if(SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB AND SWIFT_SHOULD_BUILD_EMBEDDED_CONCURRENC
314309
endif()
315310
endif()
316311

312+
if("${arch}" MATCHES "wasm32")
313+
set(SWIFT_RUNTIME_CONCURRENCY_EMBEDDED_SWIFT_SOURCES
314+
ExecutorImpl.swift
315+
PlatformExecutorCooperative.swift
316+
)
317+
else()
318+
set(SWIFT_RUNTIME_CONCURRENCY_EMBEDDED_SWIFT_SOURCES
319+
ExecutorImpl.swift
320+
PlatformExecutorNone.swift
321+
)
322+
endif()
323+
324+
317325
set(SWIFT_SDK_embedded_THREADING_PACKAGE none)
318326
set(SWIFT_SDK_embedded_ARCH_${arch}_MODULE "${mod}")
319327
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
@@ -87,7 +87,6 @@ internal func _jobGetExecutorPrivateData(
8787
_ job: Builtin.Job
8888
) -> UnsafeMutableRawPointer
8989

90-
#if !$Embedded
9190
#if !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
9291
@available(StdlibDeploymentTarget 6.2, *)
9392
@_silgen_name("swift_getMainExecutor")
@@ -100,7 +99,6 @@ internal func _getMainExecutor() -> any SerialExecutor {
10099
@_silgen_name("swift_getMainExecutor")
101100
internal func _getMainExecutor() -> any SerialExecutor
102101
#endif // SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
103-
#endif // !$Embedded
104102

105103
@available(StdlibDeploymentTarget 6.2, *)
106104
@_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")
@@ -164,4 +162,3 @@ extension MainActor {
164162
}
165163
#endif // !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
166164

167-
#endif // !$Embedded

0 commit comments

Comments
 (0)