Skip to content

Commit e94c827

Browse files
committed
Remove swift_task_create_async_let_future.
This is a small shim over `swift_task_create`. Use that instead.
1 parent 29b45a3 commit e94c827

File tree

6 files changed

+10
-46
lines changed

6 files changed

+10
-46
lines changed

include/swift/Runtime/Concurrency.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ SWIFT_EXPORT_FROM(swift_Concurrency) SWIFT_CC(swift)
262262
void swift_asyncLet_start(AsyncLet *alet,
263263
TaskOptionRecord *options,
264264
const Metadata *futureResultType,
265-
void *closureEntryPoint, void *closureContext);
265+
void *closureEntryPoint, HeapObject *closureContext);
266266

267267
/// This matches the ABI of a closure `<T>(Builtin.RawPointer) async -> T`
268268
using AsyncLetWaitSignature =

include/swift/Runtime/RuntimeFunctions.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1676,7 +1676,7 @@ FUNCTION(DistributedActorDestroy,
16761676
/// TaskOptionRecord *options,
16771677
/// const Metadata *futureResultType,
16781678
/// void *closureEntryPoint,
1679-
/// OpaqueValue *closureContext
1679+
/// HeapObject *closureContext
16801680
/// );
16811681
FUNCTION(AsyncLetStart,
16821682
swift_asyncLet_start, SwiftCC,

stdlib/public/CompatibilityOverride/CompatibilityOverrideConcurrency.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ OVERRIDE_ASYNC_LET(asyncLet_start, void,
166166
TaskOptionRecord *options,
167167
const Metadata *futureResultType,
168168
void *closureEntryPoint,
169-
void *closureContext
169+
HeapObject *closureContext
170170
),
171171
(alet, options,
172172
futureResultType, closureEntryPoint, closureContext))

stdlib/public/Concurrency/AsyncLet.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,15 +93,17 @@ SWIFT_CC(swift)
9393
static void swift_asyncLet_startImpl(AsyncLet *alet,
9494
TaskOptionRecord *options,
9595
const Metadata *futureResultType,
96-
void *closureEntryPoint, void *closureContext) {
96+
void *closureEntryPoint,
97+
HeapObject *closureContext) {
9798
AsyncTask *parent = swift_task_getCurrent();
9899
assert(parent && "async-let cannot be created without parent task");
99100

100-
auto flags = JobFlags(JobKind::Task, parent->getPriority());
101-
flags.task_setIsFuture(true);
102-
flags.task_setIsChildTask(true);
101+
auto flags = TaskCreateFlags();
102+
flags.setPriority(parent->getPriority());
103+
flags.setIsChildTask(true);
104+
flags.setIsAsyncLetTask(true);
103105

104-
auto childTaskAndContext = swift_task_create_async_let_future(
106+
auto childTaskAndContext = swift_task_create(
105107
flags.getOpaqueValue(),
106108
options,
107109
futureResultType,

stdlib/public/Concurrency/Task.cpp

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -684,38 +684,6 @@ swift::swift_task_create_f(
684684
function, /*closureContext=*/nullptr, initialContextSize);
685685
}
686686

687-
/// Temporary hack to convert from job flags to task-creation flags,
688-
/// until we can eliminate the entry points that operate in terms of job
689-
/// flags.
690-
static size_t convertJobFlagsToTaskCreateFlags(size_t rawJobFlags) {
691-
JobFlags jobFlags(rawJobFlags);
692-
TaskCreateFlags taskCreateFlags;
693-
taskCreateFlags.setPriority(jobFlags.getPriority());
694-
taskCreateFlags.setIsChildTask(jobFlags.task_isChildTask());
695-
taskCreateFlags.setIsAsyncLetTask(jobFlags.task_isAsyncLetTask());
696-
return taskCreateFlags.getOpaqueValue();
697-
}
698-
699-
AsyncTaskAndContext swift::swift_task_create_async_let_future(
700-
size_t rawFlags,
701-
TaskOptionRecord *options,
702-
const Metadata *futureResultType,
703-
void *closureEntry, void *closureContext) {
704-
FutureAsyncSignature::FunctionType *taskEntry;
705-
size_t initialContextSize;
706-
std::tie(taskEntry, initialContextSize)
707-
= getAsyncClosureEntryPointAndContextSize<
708-
FutureAsyncSignature,
709-
SpecialPointerAuthDiscriminators::AsyncFutureFunction
710-
>(closureEntry, (HeapObject *)closureContext);
711-
712-
JobFlags flags(rawFlags);
713-
flags.task_setIsAsyncLetTask(true);
714-
return swift_task_create_common(
715-
convertJobFlagsToTaskCreateFlags(flags.getOpaqueValue()), options,
716-
futureResultType, taskEntry, closureContext, initialContextSize);
717-
}
718-
719687
SWIFT_CC(swiftasync)
720688
static void swift_task_future_waitImpl(
721689
OpaqueValue *result,

stdlib/public/Concurrency/TaskPrivate.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,6 @@ void runJobInEstablishedExecutorContext(Job *job);
7777
/// Clear the active task reference for the current thread.
7878
AsyncTask *_swift_task_clearCurrent();
7979

80-
AsyncTaskAndContext swift_task_create_async_let_future(
81-
size_t flags,
82-
TaskOptionRecord *options,
83-
const Metadata *futureResultType,
84-
void *closureEntry, void *closureContext);
85-
8680
#if defined(SWIFT_STDLIB_SINGLE_THREADED_RUNTIME)
8781
#define SWIFT_CONCURRENCY_COOPERATIVE_GLOBAL_EXECUTOR 1
8882
#else

0 commit comments

Comments
 (0)