Skip to content

Commit d82de55

Browse files
committed
less code duplication
1 parent 9f5a707 commit d82de55

File tree

4 files changed

+38
-58
lines changed

4 files changed

+38
-58
lines changed

stdlib/public/Concurrency/Task.swift

Lines changed: 14 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,8 @@ extension Task where Failure == Error {
200200
let flags = taskCreateFlags(priority: priority, isChildTask: false,
201201
copyTaskLocals: true, inheritContext: true,
202202
enqueueJob: false,
203-
addPendingGroupTaskUnconditionally: false)
203+
addPendingGroupTaskUnconditionally: false,
204+
isDiscardingTask: false)
204205
let (task, _) = Builtin.createAsyncTask(flags, work)
205206
_startTaskOnMainActor(task)
206207
return Task<Success, Error>(task)
@@ -222,7 +223,8 @@ extension Task where Failure == Never {
222223
let flags = taskCreateFlags(priority: priority, isChildTask: false,
223224
copyTaskLocals: true, inheritContext: true,
224225
enqueueJob: false,
225-
addPendingGroupTaskUnconditionally: false)
226+
addPendingGroupTaskUnconditionally: false,
227+
isDiscardingTask: false)
226228
let (task, _) = Builtin.createAsyncTask(flags, work)
227229
_startTaskOnMainActor(task)
228230
return Task(task)
@@ -503,36 +505,8 @@ struct JobFlags {
503505
func taskCreateFlags(
504506
priority: TaskPriority?, isChildTask: Bool, copyTaskLocals: Bool,
505507
inheritContext: Bool, enqueueJob: Bool,
506-
addPendingGroupTaskUnconditionally: Bool
507-
) -> Int {
508-
var bits = 0
509-
bits |= (bits & ~0xFF) | Int(priority?.rawValue ?? 0)
510-
if isChildTask {
511-
bits |= 1 << 8
512-
}
513-
if copyTaskLocals {
514-
bits |= 1 << 10
515-
}
516-
if inheritContext {
517-
bits |= 1 << 11
518-
}
519-
if enqueueJob {
520-
bits |= 1 << 12
521-
}
522-
if addPendingGroupTaskUnconditionally {
523-
bits |= 1 << 13
524-
}
525-
return bits
526-
}
527-
528-
/// Form task creation flags for use with the createAsyncTask builtins.
529-
@available(SwiftStdlib 5.9, *)
530-
@_alwaysEmitIntoClient
531-
func taskCreateFlags(
532-
priority: TaskPriority?, isChildTask: Bool, copyTaskLocals: Bool,
533-
inheritContext: Bool, enqueueJob: Bool,
534-
addPendingGroupTaskUnconditionally: Bool,
535-
isDiscardingTask: Bool
508+
addPendingGroupTaskUnconditionally: Bool,
509+
isDiscardingTask: Bool
536510
) -> Int {
537511
var bits = 0
538512
bits |= (bits & ~0xFF) | Int(priority?.rawValue ?? 0)
@@ -605,7 +579,8 @@ extension Task where Failure == Never {
605579
let flags = taskCreateFlags(
606580
priority: priority, isChildTask: false, copyTaskLocals: true,
607581
inheritContext: true, enqueueJob: true,
608-
addPendingGroupTaskUnconditionally: false)
582+
addPendingGroupTaskUnconditionally: false,
583+
isDiscardingTask: false)
609584

610585
// Create the asynchronous task.
611586
let (task, _) = Builtin.createAsyncTask(flags, operation)
@@ -665,8 +640,8 @@ extension Task where Failure == Error {
665640
let flags = taskCreateFlags(
666641
priority: priority, isChildTask: false, copyTaskLocals: true,
667642
inheritContext: true, enqueueJob: true,
668-
addPendingGroupTaskUnconditionally: false
669-
)
643+
addPendingGroupTaskUnconditionally: false,
644+
isDiscardingTask: false)
670645

671646
// Create the asynchronous task future.
672647
let (task, _) = Builtin.createAsyncTask(flags, operation)
@@ -724,7 +699,8 @@ extension Task where Failure == Never {
724699
let flags = taskCreateFlags(
725700
priority: priority, isChildTask: false, copyTaskLocals: false,
726701
inheritContext: false, enqueueJob: true,
727-
addPendingGroupTaskUnconditionally: false)
702+
addPendingGroupTaskUnconditionally: false,
703+
isDiscardingTask: false)
728704

729705
// Create the asynchronous task future.
730706
let (task, _) = Builtin.createAsyncTask(flags, operation)
@@ -783,8 +759,8 @@ extension Task where Failure == Error {
783759
let flags = taskCreateFlags(
784760
priority: priority, isChildTask: false, copyTaskLocals: false,
785761
inheritContext: false, enqueueJob: true,
786-
addPendingGroupTaskUnconditionally: false
787-
)
762+
addPendingGroupTaskUnconditionally: false,
763+
isDiscardingTask: false)
788764

789765
// Create the asynchronous task future.
790766
let (task, _) = Builtin.createAsyncTask(flags, operation)

stdlib/public/Concurrency/TaskGroup.swift

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -272,14 +272,15 @@ public struct TaskGroup<ChildTaskResult: Sendable> {
272272
let flags = taskCreateFlags(
273273
priority: priority, isChildTask: true, copyTaskLocals: false,
274274
inheritContext: false, enqueueJob: false,
275-
addPendingGroupTaskUnconditionally: true
275+
addPendingGroupTaskUnconditionally: true,
276+
isDiscardingTask: false
276277
)
277278
#else
278279
let flags = taskCreateFlags(
279280
priority: priority, isChildTask: true, copyTaskLocals: false,
280281
inheritContext: false, enqueueJob: true,
281-
addPendingGroupTaskUnconditionally: true
282-
)
282+
addPendingGroupTaskUnconditionally: true,
283+
isDiscardingTask: false)
283284
#endif
284285

285286
// Create the task in this group.
@@ -314,14 +315,14 @@ public struct TaskGroup<ChildTaskResult: Sendable> {
314315
let flags = taskCreateFlags(
315316
priority: priority, isChildTask: true, copyTaskLocals: false,
316317
inheritContext: false, enqueueJob: false,
317-
addPendingGroupTaskUnconditionally: false
318-
)
318+
addPendingGroupTaskUnconditionally: false,
319+
isDiscardingTask: false)
319320
#else
320321
let flags = taskCreateFlags(
321322
priority: priority, isChildTask: true, copyTaskLocals: false,
322323
inheritContext: false, enqueueJob: true,
323-
addPendingGroupTaskUnconditionally: false
324-
)
324+
addPendingGroupTaskUnconditionally: false,
325+
isDiscardingTask: false)
325326
#endif
326327

327328
// Create the task in this group.
@@ -354,8 +355,8 @@ public struct TaskGroup<ChildTaskResult: Sendable> {
354355
let flags = taskCreateFlags(
355356
priority: nil, isChildTask: true, copyTaskLocals: false,
356357
inheritContext: false, enqueueJob: true,
357-
addPendingGroupTaskUnconditionally: true
358-
)
358+
addPendingGroupTaskUnconditionally: true,
359+
isDiscardingTask: false)
359360

360361
// Create the task in this group.
361362
_ = Builtin.createAsyncTaskInGroup(flags, _group, operation)
@@ -394,8 +395,8 @@ public struct TaskGroup<ChildTaskResult: Sendable> {
394395
let flags = taskCreateFlags(
395396
priority: nil, isChildTask: true, copyTaskLocals: false,
396397
inheritContext: false, enqueueJob: true,
397-
addPendingGroupTaskUnconditionally: false
398-
)
398+
addPendingGroupTaskUnconditionally: false,
399+
isDiscardingTask: false)
399400

400401
// Create the task in this group.
401402
_ = Builtin.createAsyncTaskInGroup(flags, _group, operation)
@@ -682,7 +683,8 @@ public struct ThrowingTaskGroup<ChildTaskResult: Sendable, Failure: Error> {
682683
let flags = taskCreateFlags(
683684
priority: priority, isChildTask: true, copyTaskLocals: false,
684685
inheritContext: false, enqueueJob: true,
685-
addPendingGroupTaskUnconditionally: true
686+
addPendingGroupTaskUnconditionally: true,
687+
isDiscardingTask: false
686688
)
687689

688690
// Create the task in this group.
@@ -720,8 +722,8 @@ public struct ThrowingTaskGroup<ChildTaskResult: Sendable, Failure: Error> {
720722
let flags = taskCreateFlags(
721723
priority: priority, isChildTask: true, copyTaskLocals: false,
722724
inheritContext: false, enqueueJob: true,
723-
addPendingGroupTaskUnconditionally: false
724-
)
725+
addPendingGroupTaskUnconditionally: false,
726+
isDiscardingTask: false)
725727

726728
// Create the task in this group.
727729
_ = Builtin.createAsyncTaskInGroup(flags, _group, operation)
@@ -756,8 +758,8 @@ public struct ThrowingTaskGroup<ChildTaskResult: Sendable, Failure: Error> {
756758
let flags = taskCreateFlags(
757759
priority: nil, isChildTask: true, copyTaskLocals: false,
758760
inheritContext: false, enqueueJob: true,
759-
addPendingGroupTaskUnconditionally: true
760-
)
761+
addPendingGroupTaskUnconditionally: true,
762+
isDiscardingTask: false)
761763

762764
// Create the task in this group.
763765
_ = Builtin.createAsyncTaskInGroup(flags, _group, operation)
@@ -799,8 +801,8 @@ public struct ThrowingTaskGroup<ChildTaskResult: Sendable, Failure: Error> {
799801
let flags = taskCreateFlags(
800802
priority: nil, isChildTask: true, copyTaskLocals: false,
801803
inheritContext: false, enqueueJob: true,
802-
addPendingGroupTaskUnconditionally: false
803-
)
804+
addPendingGroupTaskUnconditionally: false,
805+
isDiscardingTask: false)
804806

805807
// Create the task in this group.
806808
_ = Builtin.createAsyncTaskInGroup(flags, _group, operation)

stdlib/public/Concurrency/TaskSleep.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,8 @@ extension Task where Success == Never, Failure == Never {
240240
let sleepTaskFlags = taskCreateFlags(
241241
priority: nil, isChildTask: false, copyTaskLocals: false,
242242
inheritContext: false, enqueueJob: false,
243-
addPendingGroupTaskUnconditionally: false)
243+
addPendingGroupTaskUnconditionally: false,
244+
isDiscardingTask: false)
244245
let (sleepTask, _) = Builtin.createAsyncTask(sleepTaskFlags) {
245246
onSleepWake(wordPtr)
246247
}

stdlib/public/Concurrency/TaskSleepDuration.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ extension Task where Success == Never, Failure == Never {
5858
let sleepTaskFlags = taskCreateFlags(
5959
priority: nil, isChildTask: false, copyTaskLocals: false,
6060
inheritContext: false, enqueueJob: false,
61-
addPendingGroupTaskUnconditionally: false)
61+
addPendingGroupTaskUnconditionally: false,
62+
isDiscardingTask: false)
6263
let (sleepTask, _) = Builtin.createAsyncTask(sleepTaskFlags) {
6364
onSleepWake(wordPtr)
6465
}

0 commit comments

Comments
 (0)