@@ -94,8 +94,9 @@ static void withStatusRecordLock(
94
94
status, newStatus,
95
95
/* success*/ SWIFT_MEMORY_ORDER_CONSUME,
96
96
/* failure*/ std::memory_order_relaxed)) {
97
+ bool wasRunning = status.isRunning ();
97
98
status = newStatus;
98
- status.traceStatusChanged (task, false );
99
+ status.traceStatusChanged (task, false , wasRunning );
99
100
break ;
100
101
}
101
102
}
@@ -130,7 +131,7 @@ static void withStatusRecordLock(
130
131
status, newStatus,
131
132
/* success*/ std::memory_order_relaxed,
132
133
/* failure*/ std::memory_order_relaxed)) {
133
- newStatus.traceStatusChanged (task, false );
134
+ newStatus.traceStatusChanged (task, false , status. isRunning () );
134
135
break ;
135
136
}
136
137
}
@@ -196,7 +197,7 @@ bool swift::addStatusRecord(AsyncTask *task, TaskStatusRecord *newRecord,
196
197
if (task->_private ()._status ().compare_exchange_weak (oldStatus, newStatus,
197
198
/* success*/ std::memory_order_release,
198
199
/* failure*/ std::memory_order_relaxed)) {
199
- newStatus.traceStatusChanged (task, false );
200
+ newStatus.traceStatusChanged (task, false , oldStatus. isRunning () );
200
201
return true ;
201
202
} else {
202
203
// Retry
@@ -302,7 +303,7 @@ void swift::removeStatusRecord(AsyncTask *task, TaskStatusRecord *record,
302
303
oldStatus, newStatus,
303
304
/* success*/ std::memory_order_relaxed,
304
305
/* failure*/ std::memory_order_relaxed)) {
305
- newStatus.traceStatusChanged (task, false );
306
+ newStatus.traceStatusChanged (task, false , oldStatus. isRunning () );
306
307
return ;
307
308
}
308
309
@@ -904,7 +905,7 @@ static void swift_task_cancelImpl(AsyncTask *task) {
904
905
}
905
906
}
906
907
907
- newStatus.traceStatusChanged (task, false );
908
+ newStatus.traceStatusChanged (task, false , oldStatus. isRunning () );
908
909
if (newStatus.getInnermostRecord () == nullptr ) {
909
910
// No records, nothing to propagate
910
911
return ;
0 commit comments