mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Initial Task Executor implementation Task(on:), addTask(on:) etc. (#68793)
Co-authored-by: John McCall <rjmccall@gmail.com>
This commit is contained in:
committed by
GitHub
parent
7a3e3aea15
commit
828f589be4
@@ -674,7 +674,8 @@ IRGenModule::IRGenModule(IRGenerator &irgen,
|
||||
SwiftAsyncLetPtrTy = Int8PtrTy; // we pass it opaquely (AsyncLet*)
|
||||
SwiftTaskOptionRecordPtrTy = SizeTy; // Builtin.RawPointer? that we get as (TaskOptionRecord*)
|
||||
SwiftTaskGroupPtrTy = Int8PtrTy; // we pass it opaquely (TaskGroup*)
|
||||
SwiftTaskOptionRecordTy = createStructType(*this, "swift.task_option", {
|
||||
SwiftTaskOptionRecordTy = createStructType(
|
||||
*this, "swift.task_option", {
|
||||
SizeTy, // Flags
|
||||
SwiftTaskOptionRecordPtrTy, // Parent
|
||||
});
|
||||
@@ -698,6 +699,11 @@ IRGenModule::IRGenModule(IRGenerator &irgen,
|
||||
ExecutorFirstTy, // identity
|
||||
ExecutorSecondTy, // implementation
|
||||
});
|
||||
SwiftInitialTaskExecutorPreferenceTaskOptionRecordTy =
|
||||
createStructType(*this, "swift.task_executor_task_option", {
|
||||
SwiftTaskOptionRecordTy, // Base option record
|
||||
SwiftExecutorTy, // Executor
|
||||
});
|
||||
SwiftJobTy = createStructType(*this, "swift.job", {
|
||||
RefCountedStructTy, // object header
|
||||
Int8PtrTy, Int8PtrTy, // SchedulerPrivate
|
||||
@@ -881,6 +887,14 @@ namespace RuntimeConstants {
|
||||
return RuntimeAvailability::AlwaysAvailable;
|
||||
}
|
||||
|
||||
RuntimeAvailability TaskExecutorAvailability(ASTContext &context) {
|
||||
auto featureAvailability = context.getTaskExecutorAvailability();
|
||||
if (!isDeploymentAvailabilityContainedIn(context, featureAvailability)) {
|
||||
return RuntimeAvailability::ConditionallyAvailable;
|
||||
}
|
||||
return RuntimeAvailability::AlwaysAvailable;
|
||||
}
|
||||
|
||||
RuntimeAvailability ConcurrencyDiscardingTaskGroupAvailability(ASTContext &context) {
|
||||
auto featureAvailability =
|
||||
context.getConcurrencyDiscardingTaskGroupAvailability();
|
||||
|
||||
Reference in New Issue
Block a user