Skip to content

Commit c29bffd

Browse files
committed
remove buildOrdinaryTaskExecutorRef until we need it
1 parent 16e9424 commit c29bffd

File tree

16 files changed

+8
-131
lines changed

16 files changed

+8
-131
lines changed

include/swift/AST/Builtins.def

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,11 +1004,6 @@ BUILTIN_MISC_OPERATION_WITH_SILGEN(AutoDiffAllocateSubcontextWithType, "autoDiff
10041004
BUILTIN_MISC_OPERATION_WITH_SILGEN(BuildOrdinarySerialExecutorRef,
10051005
"buildOrdinarySerialExecutorRef", "n", Special)
10061006

1007-
/// Build a Builtin.Executor value from an "ordinary" task executor
1008-
/// reference.
1009-
BUILTIN_MISC_OPERATION_WITH_SILGEN(BuildOrdinaryTaskExecutorRef,
1010-
"buildOrdinaryTaskExecutorRef", "n", Special)
1011-
10121007
/// Build a Builtin.Executor value from an "complex equality" serial executor
10131008
/// reference.
10141009
BUILTIN_MISC_OPERATION_WITH_SILGEN(BuildComplexEqualitySerialExecutorRef,

include/swift/Basic/Features.def

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ LANGUAGE_FEATURE(BuiltinTaskGroupWithArgument, 0, "TaskGroup builtins", true)
8383
LANGUAGE_FEATURE(InheritActorContext, 0, "@_inheritActorContext attribute", true)
8484
LANGUAGE_FEATURE(ImplicitSelfCapture, 0, "@_implicitSelfCapture attribute", true)
8585
LANGUAGE_FEATURE(BuiltinBuildExecutor, 0, "Executor-building builtins", true)
86-
LANGUAGE_FEATURE(BuiltinBuildTaskExecutor, 0, "TaskExecutor-building builtins", true)
8786
LANGUAGE_FEATURE(BuiltinBuildComplexEqualityExecutor, 0, "Executor-building for 'complexEquality executor' builtins", true)
8887
LANGUAGE_FEATURE(BuiltinBuildMainExecutor, 0, "MainActor executor building builtin", true)
8988
LANGUAGE_FEATURE(BuiltinCreateAsyncTaskInGroup, 0, "MainActor executor building builtin", true)

lib/AST/ASTPrinter.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3086,10 +3086,6 @@ static bool usesFeatureBuiltinExecutor(Decl *decl) {
30863086
return usesBuiltinType(decl, BuiltinTypeKind::BuiltinExecutor);
30873087
}
30883088

3089-
static bool usesFeatureBuiltinBuildTaskExecutor(Decl *decl) {
3090-
return false;
3091-
}
3092-
30933089
static bool usesFeatureBuiltinBuildExecutor(Decl *decl) {
30943090
return false;
30953091
}

lib/AST/Builtins.cpp

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1610,16 +1610,6 @@ static ValueDecl *getTargetOSVersionAtLeast(ASTContext &Context,
16101610
return getBuiltinFunction(Id, {int32Type, int32Type, int32Type}, int32Type);
16111611
}
16121612

1613-
static ValueDecl *getBuildOrdinaryTaskExecutorRef(ASTContext &ctx,
1614-
Identifier id) {
1615-
return getBuiltinFunction(ctx, id, _thin,
1616-
_generics(_unrestricted,
1617-
_conformsTo(_typeparam(0), _taskExecutor)),
1618-
_parameters(_typeparam(0)),
1619-
_executor);
1620-
}
1621-
1622-
16231613
static ValueDecl *getBuildOrdinarySerialExecutorRef(ASTContext &ctx,
16241614
Identifier id) {
16251615
return getBuiltinFunction(ctx, id, _thin,
@@ -2929,9 +2919,6 @@ ValueDecl *swift::getBuiltinValueDecl(ASTContext &Context, Identifier Id) {
29292919
case BuiltinValueKind::BuildComplexEqualitySerialExecutorRef:
29302920
return getBuildComplexEqualitySerialExecutorRef(Context, Id);
29312921

2932-
case BuiltinValueKind::BuildOrdinaryTaskExecutorRef:
2933-
return getBuildOrdinaryTaskExecutorRef(Context, Id);
2934-
29352922
case BuiltinValueKind::PoundAssert:
29362923
return getPoundAssert(Context, Id);
29372924

lib/IRGen/GenBuiltin.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -426,13 +426,6 @@ void irgen::emitBuiltinCall(IRGenFunction &IGF, const BuiltinInfo &Builtin,
426426
emitBuildOrdinarySerialExecutorRef(IGF, actor, type, conf, out);
427427
return;
428428
}
429-
if (Builtin.ID == BuiltinValueKind::BuildOrdinaryTaskExecutorRef) {
430-
auto actor = args.claimNext();
431-
auto type = substitutions.getReplacementTypes()[0]->getCanonicalType();
432-
auto conf = substitutions.getConformances()[0];
433-
emitBuildOrdinaryTaskExecutorRef(IGF, actor, type, conf, out);
434-
return;
435-
}
436429
if (Builtin.ID == BuiltinValueKind::BuildComplexEqualitySerialExecutorRef) {
437430
auto actor = args.claimNext();
438431
auto type = substitutions.getReplacementTypes()[0]->getCanonicalType();

lib/IRGen/GenConcurrency.cpp

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -174,23 +174,6 @@ void irgen::emitBuildOrdinarySerialExecutorRef(IRGenFunction &IGF,
174174
out.add(impl);
175175
}
176176

177-
void irgen::emitBuildOrdinaryTaskExecutorRef(IRGenFunction &IGF,
178-
llvm::Value *executor,
179-
CanType executorType,
180-
ProtocolConformanceRef executorConf,
181-
Explosion &out) {
182-
// The implementation word of an "ordinary" task executor is
183-
// just the witness table pointer with no flags set.
184-
llvm::Value *identity =
185-
IGF.Builder.CreatePtrToInt(executor, IGF.IGM.ExecutorFirstTy);
186-
llvm::Value *impl =
187-
emitWitnessTableRef(IGF, executorType, executorConf);
188-
impl = IGF.Builder.CreatePtrToInt(impl, IGF.IGM.ExecutorSecondTy);
189-
190-
out.add(identity);
191-
out.add(impl);
192-
}
193-
194177
void irgen::emitBuildComplexEqualitySerialExecutorRef(IRGenFunction &IGF,
195178
llvm::Value *executor,
196179
CanType executorType,

lib/IRGen/GenConcurrency.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,6 @@ void emitBuildOrdinarySerialExecutorRef(IRGenFunction &IGF,
5454
ProtocolConformanceRef executorConformance,
5555
Explosion &out);
5656

57-
/// Emit the buildOrdinaryTaskExecutorRef builtin.
58-
void emitBuildOrdinaryTaskExecutorRef(IRGenFunction &IGF,
59-
llvm::Value *executor,
60-
CanType executorType,
61-
ProtocolConformanceRef executorConformance,
62-
Explosion &out);
63-
6457
/// Emit the buildComplexEqualitySerialExecutorRef builtin.
6558
void emitBuildComplexEqualitySerialExecutorRef(IRGenFunction &IGF,
6659
llvm::Value *executor,

lib/SIL/IR/OperandOwnership.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -959,7 +959,6 @@ BUILTIN_OPERAND_OWNERSHIP(PointerEscape, AutoDiffProjectTopLevelSubcontext)
959959
// ownership should be 'TrivialUse'.
960960
BUILTIN_OPERAND_OWNERSHIP(ForwardingConsume, ConvertTaskToJob)
961961

962-
BUILTIN_OPERAND_OWNERSHIP(BitwiseEscape, BuildOrdinaryTaskExecutorRef)
963962
BUILTIN_OPERAND_OWNERSHIP(BitwiseEscape, BuildOrdinarySerialExecutorRef)
964963
BUILTIN_OPERAND_OWNERSHIP(BitwiseEscape, BuildComplexEqualitySerialExecutorRef)
965964
BUILTIN_OPERAND_OWNERSHIP(BitwiseEscape, BuildDefaultActorExecutorRef)

lib/SIL/IR/ValueOwnership.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -581,7 +581,6 @@ CONSTANT_OWNERSHIP_BUILTIN(None, GetCurrentExecutor)
581581
CONSTANT_OWNERSHIP_BUILTIN(None, ResumeNonThrowingContinuationReturning)
582582
CONSTANT_OWNERSHIP_BUILTIN(None, ResumeThrowingContinuationReturning)
583583
CONSTANT_OWNERSHIP_BUILTIN(None, ResumeThrowingContinuationThrowing)
584-
CONSTANT_OWNERSHIP_BUILTIN(None, BuildOrdinaryTaskExecutorRef)
585584
CONSTANT_OWNERSHIP_BUILTIN(None, BuildOrdinarySerialExecutorRef)
586585
CONSTANT_OWNERSHIP_BUILTIN(None, BuildComplexEqualitySerialExecutorRef)
587586
CONSTANT_OWNERSHIP_BUILTIN(None, BuildDefaultActorExecutorRef)

lib/SIL/Utils/InstructionUtils.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -988,7 +988,6 @@ RuntimeEffect swift::getRuntimeEffect(SILInstruction *inst, SILType &impactType)
988988
return RuntimeEffect::RefCounting | RuntimeEffect::Deallocating;
989989
case BuiltinValueKind::Swift3ImplicitObjCEntrypoint:
990990
return RuntimeEffect::ObjectiveC | RuntimeEffect::Allocating;
991-
case BuiltinValueKind::BuildOrdinaryTaskExecutorRef:
992991
case BuiltinValueKind::BuildOrdinarySerialExecutorRef:
993992
case BuiltinValueKind::BuildComplexEqualitySerialExecutorRef:
994993
case BuiltinValueKind::BuildDefaultActorExecutorRef:

lib/SIL/Verifier/SILVerifier.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2112,7 +2112,6 @@ class SILVerifier : public SILVerifierBase<SILVerifier> {
21122112
}
21132113

21142114
if (builtinKind == BuiltinValueKind::BuildOrdinarySerialExecutorRef ||
2115-
builtinKind == BuiltinValueKind::BuildOrdinaryTaskExecutorRef ||
21162115
builtinKind == BuiltinValueKind::BuildComplexEqualitySerialExecutorRef ||
21172116
builtinKind == BuiltinValueKind::BuildDefaultActorExecutorRef) {
21182117
require(arguments.size() == 1,

lib/SILGen/SILGenBuiltin.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1780,12 +1780,6 @@ static ManagedValue emitBuildExecutorRef(SILGenFunction &SGF, SILLocation loc,
17801780
subs, argValues);
17811781
return ManagedValue::forObjectRValueWithoutOwnership(builtinApply);
17821782
}
1783-
static ManagedValue emitBuiltinBuildOrdinaryTaskExecutorRef(
1784-
SILGenFunction &SGF, SILLocation loc, SubstitutionMap subs,
1785-
ArrayRef<ManagedValue> args, SGFContext C) {
1786-
return emitBuildExecutorRef(SGF, loc, subs, args,
1787-
BuiltinValueKind::BuildOrdinaryTaskExecutorRef);
1788-
}
17891783
static ManagedValue emitBuiltinBuildOrdinarySerialExecutorRef(
17901784
SILGenFunction &SGF, SILLocation loc, SubstitutionMap subs,
17911785
ArrayRef<ManagedValue> args, SGFContext C) {

lib/SILOptimizer/Transforms/AccessEnforcementReleaseSinking.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,6 @@ static bool isBarrier(SILInstruction *inst) {
191191
case BuiltinValueKind::DestroyDefaultActor:
192192
case BuiltinValueKind::InitializeDistributedRemoteActor:
193193
case BuiltinValueKind::InitializeNonDefaultDistributedActor:
194-
case BuiltinValueKind::BuildOrdinaryTaskExecutorRef:
195194
case BuiltinValueKind::BuildOrdinarySerialExecutorRef:
196195
case BuiltinValueKind::BuildComplexEqualitySerialExecutorRef:
197196
case BuiltinValueKind::BuildDefaultActorExecutorRef:

stdlib/public/CompatibilityOverride/CompatibilityOverrideConcurrency.def

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,26 +108,26 @@
108108

109109
OVERRIDE_ACTOR(task_enqueue, void,
110110
SWIFT_EXPORT_FROM(swift_Concurrency), SWIFT_CC(swift),
111-
swift::, (Job *job, ExecutorRef executor),
111+
swift::, (Job *job, SerialExecutorRef executor),
112112
(job, executor))
113113

114114
OVERRIDE_ACTOR(job_run, void,
115115
SWIFT_EXPORT_FROM(swift_Concurrency), SWIFT_CC(swift),
116-
swift::, (Job *job, ExecutorRef executor),
116+
swift::, (Job *job, SerialExecutorRef executor),
117117
(job, executor))
118118

119-
OVERRIDE_ACTOR(task_getCurrentExecutor, ExecutorRef,
119+
OVERRIDE_ACTOR(task_getCurrentExecutor, SerialExecutorRef,
120120
SWIFT_EXPORT_FROM(swift_Concurrency), SWIFT_CC(swift),
121121
swift::, ,)
122122

123123
OVERRIDE_ACTOR(task_isCurrentExecutor, bool,
124124
SWIFT_EXPORT_FROM(swift_Concurrency), SWIFT_CC(swift),
125-
swift::, (ExecutorRef executor), (executor))
125+
swift::, (SerialExecutorRef executor), (executor))
126126

127127
OVERRIDE_ACTOR(task_switch, void,
128128
SWIFT_EXPORT_FROM(swift_Concurrency), SWIFT_CC(swiftasync),
129129
swift::, (SWIFT_ASYNC_CONTEXT AsyncContext *resumeToContext,
130-
TaskContinuationFunction *resumeFunction, ExecutorRef newExecutor),
130+
TaskContinuationFunction *resumeFunction, SerialExecutorRef newExecutor),
131131
(resumeToContext, resumeFunction, newExecutor))
132132

133133
OVERRIDE_TASK(task_create_common, AsyncTaskAndContext,
@@ -200,7 +200,7 @@ OVERRIDE_TASK(task_suspend, AsyncTask *,
200200

201201
OVERRIDE_TASK(task_enqueueTaskOnExecutor, void,
202202
SWIFT_EXPORT_FROM(swift_Concurrency), SWIFT_CC(swift), swift::,
203-
(AsyncTask *task, ExecutorRef newExecutor), (task, newExecutor))
203+
(AsyncTask *task, SerialExecutorRef newExecutor), (task, newExecutor))
204204

205205
OVERRIDE_TASK(continuation_init, AsyncTask *,
206206
SWIFT_EXPORT_FROM(swift_Concurrency), SWIFT_CC(swift),

stdlib/public/Concurrency/Executor.swift

Lines changed: 2 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ public protocol TaskExecutor: Executor {
119119
// avoid drilling down to the base conformance just for the basic
120120
// work-scheduling operation.
121121
@_nonoverride
122-
@available(*, deprecated, message: "Implement 'enqueue(_: __owned ExecutorJob)' instead")
122+
@available(*, deprecated, message: "Implement 'enqueue(_: consuming ExecutorJob)' instead")
123123
func enqueue(_ job: consuming Job)
124124
#endif // !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
125125

@@ -132,13 +132,7 @@ public protocol TaskExecutor: Executor {
132132
func enqueue(_ job: consuming ExecutorJob)
133133
#endif // !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
134134

135-
/// Convert this executor value to the optimized form of borrowed
136-
/// executor references.
137-
///
138-
/// When forming an unowned executor reference you MUST guarantee
139-
/// that the executor will be kept alive (retained) until all tasks
140-
/// run by that executor have completed.
141-
func asUnownedTaskExecutor() -> UnownedTaskExecutor
135+
// TODO: Implement: func asUnownedTaskExecutor() -> UnownedTaskExecutor
142136
}
143137

144138
#if !SWIFT_STDLIB_TASK_TO_THREAD_MODEL_CONCURRENCY
@@ -250,39 +244,6 @@ public struct UnownedSerialExecutor: Sendable {
250244

251245
}
252246

253-
@available(SwiftStdlib 9999, *)
254-
@frozen
255-
public struct UnownedTaskExecutor: Sendable {
256-
#if compiler(>=5.5) && $BuiltinExecutor
257-
@usableFromInline
258-
internal var executor: Builtin.Executor
259-
260-
/// SPI: Do not use. Cannot be marked @_spi, since we need to use it from Distributed module
261-
/// which needs to reach for this from an @_transparent function which prevents @_spi use.
262-
public var _executor: Builtin.Executor {
263-
self.executor
264-
}
265-
#endif
266-
267-
@inlinable
268-
public init(_ executor: Builtin.Executor) {
269-
#if compiler(>=5.5) && $BuiltinExecutor
270-
self.executor = executor
271-
#endif
272-
}
273-
274-
@inlinable
275-
public init<E: TaskExecutor>(_ executor: __shared E) {
276-
// FIXME: #if compiler(>=9999) && $BuiltinBuildExecutor
277-
#if $BuiltinBuildTaskExecutor
278-
self.executor = Builtin.buildOrdinaryTaskExecutorRef(executor)
279-
#else
280-
fatalError("Swift compiler is incompatible with this SDK version")
281-
#endif
282-
}
283-
284-
}
285-
286247
/// Checks if the current task is running on the expected executor.
287248
///
288249
/// Generally, Swift programs should be constructed such that it is statically

test/IRGen/async/builtin_executor.sil

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,6 @@ actor MyCustomActor : SerialExecutor {
2323
}
2424
sil_vtable MyCustomActor {}
2525

26-
final class CustomTaskExecutor : TaskExecutor {
27-
func enqueue(_ job: consuming ExecutorJob)
28-
final nonisolated func asUnownedTaskExecutor() -> UnownedTaskExecutor
29-
}
30-
sil_vtable CustomTaskExecutor {}
31-
3226
// CHECK: define{{.*}} swiftcc { [[INT]], [[INT]] } @test_none()
3327
sil @test_none : $() -> Optional<Builtin.Executor> {
3428
bb0:
@@ -70,16 +64,3 @@ bb0(%0 : $MyCustomActor):
7064
%1 = builtin "buildOrdinarySerialExecutorRef"<MyCustomActor>(%0 : $MyCustomActor) : $Builtin.Executor
7165
return %1 : $Builtin.Executor
7266
}
73-
74-
// CHECK: define{{.*}} swiftcc { [[INT]], [[INT]] } @test_build_custom_task_exec(ptr %0)
75-
sil @test_build_custom_task_exec : $(@guaranteed CustomTaskExecutor) -> Builtin.Executor {
76-
bb0(%0 : $CustomTaskExecutor):
77-
// CHECK: [[T0:%.*]] = ptrtoint ptr %0 to [[INT]]
78-
// CHECK-NEXT: [[T1:%.*]] = call ptr @"$s4test18CustomTaskExecutorCACSchAAWl"()
79-
// CHECK-NEXT: [[T2:%.*]] = ptrtoint ptr [[T1]] to [[INT]]
80-
// CHECK: [[ONE:%.*]] = insertvalue { [[INT]], [[INT]] } undef, [[INT]] [[T0]], 0
81-
// CHECK-NEXT: [[TWO:%.*]] = insertvalue { [[INT]], [[INT]] } [[ONE]], [[INT]] [[T2]], 1
82-
// CHECK-NEXT: ret { [[INT]], [[INT]] } [[TWO]]
83-
%1 = builtin "buildOrdinaryTaskExecutorRef"<CustomTaskExecutor>(%0 : $CustomTaskExecutor) : $Builtin.Executor
84-
return %1 : $Builtin.Executor
85-
}

0 commit comments

Comments
 (0)