[Concurrency][Linux] Fix WASI build.

This doesn't actually add proper WASI support - it just fixes the
build so that we're no worse off than we were.

rdar://141348916
This commit is contained in:
Alastair Houghton
2025-03-14 14:57:15 +00:00
parent 8caa5c5c0d
commit a4f79f367a
6 changed files with 88 additions and 85 deletions

View File

@@ -112,49 +112,3 @@ internal func _dispatchEnqueueWithDeadline(_ global: CBool,
@available(SwiftStdlib 6.2, *)
@_silgen_name("swift_dispatchAssertMainQueue")
internal func _dispatchAssertMainQueue()
@available(SwiftStdlib 6.2, *)
@_silgen_name("swift_createDispatchEventC")
internal func _createDispatchEventC(
handler: @convention(c) @escaping (UnsafeMutableRawPointer) -> (),
context: UnsafeMutableRawPointer
) -> OpaquePointer
fileprivate class DispatchEventHandlerBox {
var handler: @Sendable () -> ()
init(handler: @escaping @Sendable () -> ()) {
self.handler = handler
}
}
@available(SwiftStdlib 6.2, *)
internal func _createDispatchEvent(handler: @escaping @Sendable () -> ()) -> OpaquePointer {
let boxed = DispatchEventHandlerBox(handler: handler)
let opaqueHandlerBox = unsafe Unmanaged.passRetained(boxed).toOpaque()
return unsafe _createDispatchEventC(
handler: { context in
let unmanaged = unsafe Unmanaged<DispatchEventHandlerBox>.fromOpaque(context)
unsafe unmanaged.takeUnretainedValue().handler()
},
context: opaqueHandlerBox
)
}
@available(SwiftStdlib 6.2, *)
@_silgen_name("swift_destroyDispatchEventC")
internal func _destroyDispatchEventC(_ event: OpaquePointer)
@available(SwiftStdlib 6.2, *)
@_silgen_name("swift_getDispatchEventContext")
internal func _getDispatchEventContext(_ event: OpaquePointer) -> UnsafeMutableRawPointer
@available(SwiftStdlib 6.2, *)
internal func _destroyDispatchEvent(_ event: OpaquePointer) {
let context = unsafe _getDispatchEventContext(event)
unsafe Unmanaged<DispatchEventHandlerBox>.fromOpaque(context).release()
unsafe _destroyDispatchEventC(event)
}
@available(SwiftStdlib 6.2, *)
@_silgen_name("swift_signalDispatchEvent")
internal func _signalDispatchEvent(_ event: OpaquePointer)