summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2009-09-18 13:44:38 +0000
committerSimon Marlow <marlowsd@gmail.com>2009-09-18 13:44:38 +0000
commit1e06c8d372a465f84311020260a73d4578a9651e (patch)
treeab8921695ed2bdd13a4cc185e582eec8675c8aad
parent656e9d6b1db053c88ba1518b6095060347e09418 (diff)
downloadhaskell-1e06c8d372a465f84311020260a73d4578a9651e.tar.gz
Fix the nursery size calculation when -N is used with -H
-rw-r--r--rts/sm/GC.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/rts/sm/GC.c b/rts/sm/GC.c
index 97acc38a0c..97f391c4aa 100644
--- a/rts/sm/GC.c
+++ b/rts/sm/GC.c
@@ -1623,6 +1623,8 @@ resize_generations (void)
static void
resize_nursery (void)
{
+ lnat min_nursery = RtsFlags.GcFlags.minAllocAreaSize * n_capabilities;
+
if (RtsFlags.GcFlags.generations == 1)
{ // Two-space collector:
nat blocks;
@@ -1665,9 +1667,9 @@ resize_nursery (void)
else
{
blocks *= RtsFlags.GcFlags.oldGenFactor;
- if (blocks < RtsFlags.GcFlags.minAllocAreaSize)
+ if (blocks < min_nursery)
{
- blocks = RtsFlags.GcFlags.minAllocAreaSize;
+ blocks = min_nursery;
}
}
resizeNurseries(blocks);
@@ -1714,8 +1716,8 @@ resize_nursery (void)
(((long)RtsFlags.GcFlags.heapSizeSuggestion - (long)needed) * 100) /
(100 + (long)g0s0_pcnt_kept);
- if (blocks < (long)RtsFlags.GcFlags.minAllocAreaSize) {
- blocks = RtsFlags.GcFlags.minAllocAreaSize;
+ if (blocks < (long)min_nursery) {
+ blocks = min_nursery;
}
resizeNurseries((nat)blocks);