@@ -79,6 +79,13 @@ void (*swift::swift_task_enqueueGlobalWithDeadline_hook)(
7979 int clock, Job *job,
8080 swift_task_enqueueGlobalWithDeadline_original original) = nullptr;
8181
82+ SWIFT_CC (swift)
83+ bool (*swift::swift_task_isOnExecutor_hook)(
84+ HeapObject *executor,
85+ const Metadata *selfType,
86+ const SerialExecutorWitnessTable *wtable,
87+ swift_task_isOnExecutor_original original) = nullptr;
88+
8289SWIFT_CC (swift)
8390void (*swift::swift_task_enqueueMainExecutor_hook)(
8491 Job *job, swift_task_enqueueMainExecutor_original original) = nullptr;
@@ -125,6 +132,24 @@ void swift::swift_task_enqueueGlobalWithDeadline(
125132 swift_task_enqueueGlobalWithDeadlineImpl (sec, nsec, tsec, tnsec, clock, job);
126133}
127134
135+ SWIFT_CC (swift)
136+ static bool swift_task_isOnExecutorImpl(HeapObject *executor,
137+ const Metadata *selfType,
138+ const SerialExecutorWitnessTable *wtable) {
139+ auto executorRef = ExecutorRef::forOrdinary (executor, wtable);
140+ return swift_task_isCurrentExecutor (executorRef);
141+ }
142+
143+ bool swift::swift_task_isOnExecutor (HeapObject *executor,
144+ const Metadata *selfType,
145+ const SerialExecutorWitnessTable *wtable) {
146+ if (swift_task_isOnExecutor_hook)
147+ return swift_task_isOnExecutor_hook (
148+ executor, selfType, wtable, swift_task_isOnExecutorImpl);
149+ else
150+ return swift_task_isOnExecutorImpl (executor, selfType, wtable);
151+ }
152+
128153/* ****************************************************************************/
129154/* ***************************** MAIN EXECUTOR *******************************/
130155/* ****************************************************************************/
0 commit comments