diff options
Diffstat (limited to 'rts/sm/Compact.c')
-rw-r--r-- | rts/sm/Compact.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/rts/sm/Compact.c b/rts/sm/Compact.c index 315eda732d..e55ae2b7c2 100644 --- a/rts/sm/Compact.c +++ b/rts/sm/Compact.c @@ -1014,10 +1014,14 @@ compact(StgClosure *static_objects) // the task list { Task *task; + InCall *incall; for (task = all_tasks; task != NULL; task = task->all_link) { - if (task->tso) { - thread_(&task->tso); - } + for (incall = task->incall; incall != NULL; + incall = incall->prev_stack) { + if (incall->tso) { + thread_(&incall->tso); + } + } } } |