diff options
author | Simon Marlow <marlowsd@gmail.com> | 2012-06-05 21:17:00 +0100 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2012-07-10 10:06:05 +0100 |
commit | 2f3a41d92bf7bba45a1f37f4dfeaed84ac4ac52a (patch) | |
tree | 62ed205b5bfbee41b476fe9ff30a762afc421b28 /rts | |
parent | 133552cc71165c595cbb8812bde573b555571c24 (diff) | |
download | haskell-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.c | 2 |
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); } |