Skip to content

Commit 127a851

Browse files
committed
Remove swift_task_create_async_let_future.
This is a small shim over `swift_task_create`. Use that instead.
1 parent 921112a commit 127a851

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
@@ -1660,7 +1660,7 @@ FUNCTION(DefaultActorDeallocateResilient,
16601660
/// TaskOptionRecord *options,
16611661
/// const Metadata *futureResultType,
16621662
/// void *closureEntryPoint,
1663-
/// OpaqueValue *closureContext
1663+
/// HeapObject *closureContext
16641664
/// );
16651665
FUNCTION(AsyncLetStart,
16661666
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
@@ -677,38 +677,6 @@ swift::swift_task_create_f(
677677
function, /*closureContext=*/nullptr, initialContextSize);
678678
}
679679

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

stdlib/public/Concurrency/TaskPrivate.h

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

53-
AsyncTaskAndContext swift_task_create_async_let_future(
54-
size_t flags,
55-
TaskOptionRecord *options,
56-
const Metadata *futureResultType,
57-
void *closureEntry, void *closureContext);
58-
5953
#if defined(SWIFT_STDLIB_SINGLE_THREADED_RUNTIME)
6054
#define SWIFT_CONCURRENCY_COOPERATIVE_GLOBAL_EXECUTOR 1
6155
#else

0 commit comments

Comments
 (0)