summaryrefslogtreecommitdiff
path: root/rts/sm/Compact.c
diff options
context:
space:
mode:
Diffstat (limited to 'rts/sm/Compact.c')
-rw-r--r--rts/sm/Compact.c10
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);
+ }
+ }
}
}