Skip to content

Commit 7ada71b

Browse files
authored
Merge pull request #82331 from swiftlang/maxd/embedded-wasm-concurrency
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.
2 parents a34913d + 9cdfc28 commit 7ada71b

File tree

4 files changed

+21
-11
lines changed

4 files changed

+21
-11
lines changed

stdlib/public/Concurrency/CMakeLists.txt

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ 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
@@ -196,10 +196,6 @@ else()
196196
)
197197
endif()
198198

199-
set(SWIFT_RUNTIME_CONCURRENCY_EMBEDDED_SWIFT_SOURCES
200-
PlatformExecutorNone.swift
201-
)
202-
203199
set(LLVM_OPTIONAL_SOURCES
204200
DispatchGlobalExecutor.cpp
205201
CooperativeGlobalExecutor.cpp
@@ -315,6 +311,20 @@ if(SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB AND SWIFT_SHOULD_BUILD_EMBEDDED_CONCURRENC
315311
endif()
316312
endif()
317313

314+
if("${arch}" MATCHES "wasm32")
315+
set(SWIFT_RUNTIME_CONCURRENCY_EMBEDDED_SWIFT_SOURCES
316+
ExecutorImpl.swift
317+
PlatformExecutorCooperative.swift
318+
)
319+
list(APPEND SWIFT_RUNTIME_CONCURRENCY_C_SOURCES
320+
ExecutorImpl.cpp
321+
)
322+
else()
323+
set(SWIFT_RUNTIME_CONCURRENCY_EMBEDDED_SWIFT_SOURCES
324+
PlatformExecutorNone.swift
325+
)
326+
endif()
327+
318328
set(SWIFT_SDK_embedded_THREADING_PACKAGE none)
319329
set(SWIFT_SDK_embedded_ARCH_${arch}_MODULE "${mod}")
320330
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 os(WASI) || (!$Embedded && !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 // os(WASI) || (!$Embedded && !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: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ internal func _jobGetExecutorPrivateData(
9191
_ job: Builtin.Job
9292
) -> UnsafeMutableRawPointer
9393

94-
#if !$Embedded
94+
#if os(WASI) || !$Embedded
9595
#if !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
9696
@available(StdlibDeploymentTarget 6.2, *)
9797
@_silgen_name("swift_getMainExecutor")
@@ -104,7 +104,7 @@ internal func _getMainExecutorAsSerialExecutor() -> (any SerialExecutor)? {
104104
@_silgen_name("swift_getMainExecutor")
105105
internal func _getMainExecutorAsSerialExecutor() -> (any SerialExecutor)?
106106
#endif // SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
107-
#endif // !$Embedded
107+
#endif // os(WASI) || !$Embedded
108108

109109
@available(StdlibDeploymentTarget 6.2, *)
110110
@_silgen_name("swift_dispatchMain")

stdlib/public/Concurrency/MainActor.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
import Swift
1414

15-
#if !$Embedded
15+
#if os(WASI) || !$Embedded
1616

1717
#if SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
1818
@available(SwiftStdlib 5.1, *)
@@ -197,4 +197,4 @@ public func _deinitOnExecutorMainActorBackDeploy(
197197

198198
#endif // !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
199199

200-
#endif // !$Embedded
200+
#endif // os(WASI) || !$Embedded

0 commit comments

Comments
 (0)