summaryrefslogtreecommitdiff
path: root/rts
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2012-06-05 21:17:00 +0100
committerSimon Marlow <marlowsd@gmail.com>2012-07-10 10:06:05 +0100
commit2f3a41d92bf7bba45a1f37f4dfeaed84ac4ac52a (patch)
tree62ed205b5bfbee41b476fe9ff30a762afc421b28 /rts
parent133552cc71165c595cbb8812bde573b555571c24 (diff)
downloadhaskell-2f3a41d92bf7bba45a1f37f4dfeaed84ac4ac52a.tar.gz
The final GC should be a major one
We do a final GC before shutting down the system, to clean up. However, we were doing an ordinary GC rather than forcing a major GC, so especially when the allocation area is large, this final GC could be expensive. This is really just a bug - the final GC should have virtually nothing to do, because there is nothing live.
Diffstat (limited to 'rts')
-rw-r--r--rts/Schedule.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/rts/Schedule.c b/rts/Schedule.c
index 326565386a..5a8c35f0cb 100644
--- a/rts/Schedule.c
+++ b/rts/Schedule.c
@@ -2454,7 +2454,7 @@ exitScheduler (rtsBool wait_foreign USED_IF_THREADS)
sched_state = SCHED_INTERRUPTING;
Capability *cap = task->cap;
waitForReturnCapability(&cap,task);
- scheduleDoGC(&cap,task,rtsFalse);
+ scheduleDoGC(&cap,task,rtsTrue);
ASSERT(task->incall->tso == NULL);
releaseCapability(cap);
}