diff --git a/stdlib/public/Concurrency/CMakeLists.txt b/stdlib/public/Concurrency/CMakeLists.txt index 8be0d0237396d..3ca643444ae69 100644 --- a/stdlib/public/Concurrency/CMakeLists.txt +++ b/stdlib/public/Concurrency/CMakeLists.txt @@ -78,8 +78,8 @@ set(SWIFT_RUNTIME_CONCURRENCY_C_SOURCES Actor.cpp AsyncLet.cpp Clock.cpp - GlobalExecutor.cpp ConcurrencyHooks.cpp + GlobalExecutor.cpp EmbeddedSupport.cpp Error.cpp ExecutorBridge.cpp @@ -196,10 +196,6 @@ else() ) endif() -set(SWIFT_RUNTIME_CONCURRENCY_EMBEDDED_SWIFT_SOURCES - PlatformExecutorNone.swift - ) - set(LLVM_OPTIONAL_SOURCES DispatchGlobalExecutor.cpp CooperativeGlobalExecutor.cpp @@ -315,6 +311,20 @@ if(SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB AND SWIFT_SHOULD_BUILD_EMBEDDED_CONCURRENC endif() endif() + if("${arch}" MATCHES "wasm32") + set(SWIFT_RUNTIME_CONCURRENCY_EMBEDDED_SWIFT_SOURCES + ExecutorImpl.swift + PlatformExecutorCooperative.swift + ) + list(APPEND SWIFT_RUNTIME_CONCURRENCY_C_SOURCES + ExecutorImpl.cpp + ) + else() + set(SWIFT_RUNTIME_CONCURRENCY_EMBEDDED_SWIFT_SOURCES + PlatformExecutorNone.swift + ) + endif() + set(SWIFT_SDK_embedded_THREADING_PACKAGE none) set(SWIFT_SDK_embedded_ARCH_${arch}_MODULE "${mod}") set(SWIFT_SDK_embedded_ARCH_${mod}_MODULE "${mod}") diff --git a/stdlib/public/Concurrency/Executor.swift b/stdlib/public/Concurrency/Executor.swift index 6b380f7f6dd3c..bbba040a1336b 100644 --- a/stdlib/public/Concurrency/Executor.swift +++ b/stdlib/public/Concurrency/Executor.swift @@ -610,7 +610,7 @@ func _createDefaultExecutors() { } } -#if !$Embedded && !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY +#if os(WASI) || (!$Embedded && !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY) extension MainActor { @available(StdlibDeploymentTarget 6.2, *) static var _executor: (any MainExecutor)? = nil @@ -627,7 +627,7 @@ extension MainActor { return _executor! } } -#endif // !$Embedded && !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY +#endif // os(WASI) || (!$Embedded && !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY) extension Task where Success == Never, Failure == Never { @available(StdlibDeploymentTarget 6.2, *) diff --git a/stdlib/public/Concurrency/ExecutorBridge.swift b/stdlib/public/Concurrency/ExecutorBridge.swift index 155c970c0d099..d4b5e1d11c81d 100644 --- a/stdlib/public/Concurrency/ExecutorBridge.swift +++ b/stdlib/public/Concurrency/ExecutorBridge.swift @@ -91,7 +91,7 @@ internal func _jobGetExecutorPrivateData( _ job: Builtin.Job ) -> UnsafeMutableRawPointer -#if !$Embedded +#if os(WASI) || !$Embedded #if !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY @available(StdlibDeploymentTarget 6.2, *) @_silgen_name("swift_getMainExecutor") @@ -104,7 +104,7 @@ internal func _getMainExecutorAsSerialExecutor() -> (any SerialExecutor)? { @_silgen_name("swift_getMainExecutor") internal func _getMainExecutorAsSerialExecutor() -> (any SerialExecutor)? #endif // SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY -#endif // !$Embedded +#endif // os(WASI) || !$Embedded @available(StdlibDeploymentTarget 6.2, *) @_silgen_name("swift_dispatchMain") diff --git a/stdlib/public/Concurrency/MainActor.swift b/stdlib/public/Concurrency/MainActor.swift index e60a1c766b428..3f57abe877171 100644 --- a/stdlib/public/Concurrency/MainActor.swift +++ b/stdlib/public/Concurrency/MainActor.swift @@ -12,7 +12,7 @@ import Swift -#if !$Embedded +#if os(WASI) || !$Embedded #if SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY @available(SwiftStdlib 5.1, *) @@ -197,4 +197,4 @@ public func _deinitOnExecutorMainActorBackDeploy( #endif // !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY -#endif // !$Embedded +#endif // os(WASI) || !$Embedded