@@ -94,8 +94,9 @@ static void withStatusRecordLock(
9494 status, newStatus,
9595 /* success*/ SWIFT_MEMORY_ORDER_CONSUME,
9696 /* failure*/ std::memory_order_relaxed)) {
97+ bool wasRunning = status.isRunning ();
9798 status = newStatus;
98- status.traceStatusChanged (task, false );
99+ status.traceStatusChanged (task, false , wasRunning );
99100 break ;
100101 }
101102 }
@@ -130,7 +131,7 @@ static void withStatusRecordLock(
130131 status, newStatus,
131132 /* success*/ std::memory_order_relaxed,
132133 /* failure*/ std::memory_order_relaxed)) {
133- newStatus.traceStatusChanged (task, false );
134+ newStatus.traceStatusChanged (task, false , status. isRunning () );
134135 break ;
135136 }
136137 }
@@ -196,7 +197,7 @@ bool swift::addStatusRecord(AsyncTask *task, TaskStatusRecord *newRecord,
196197 if (task->_private ()._status ().compare_exchange_weak (oldStatus, newStatus,
197198 /* success*/ std::memory_order_release,
198199 /* failure*/ std::memory_order_relaxed)) {
199- newStatus.traceStatusChanged (task, false );
200+ newStatus.traceStatusChanged (task, false , oldStatus. isRunning () );
200201 return true ;
201202 } else {
202203 // Retry
@@ -302,7 +303,7 @@ void swift::removeStatusRecord(AsyncTask *task, TaskStatusRecord *record,
302303 oldStatus, newStatus,
303304 /* success*/ std::memory_order_relaxed,
304305 /* failure*/ std::memory_order_relaxed)) {
305- newStatus.traceStatusChanged (task, false );
306+ newStatus.traceStatusChanged (task, false , oldStatus. isRunning () );
306307 return ;
307308 }
308309
@@ -904,7 +905,7 @@ static void swift_task_cancelImpl(AsyncTask *task) {
904905 }
905906 }
906907
907- newStatus.traceStatusChanged (task, false );
908+ newStatus.traceStatusChanged (task, false , oldStatus. isRunning () );
908909 if (newStatus.getInnermostRecord () == nullptr ) {
909910 // No records, nothing to propagate
910911 return ;
0 commit comments