diff options
author | Simon Marlow <marlowsd@gmail.com> | 2009-09-18 13:44:38 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2009-09-18 13:44:38 +0000 |
commit | 1e06c8d372a465f84311020260a73d4578a9651e (patch) | |
tree | ab8921695ed2bdd13a4cc185e582eec8675c8aad /rts/sm/GC.c | |
parent | 656e9d6b1db053c88ba1518b6095060347e09418 (diff) | |
download | haskell-1e06c8d372a465f84311020260a73d4578a9651e.tar.gz |
Fix the nursery size calculation when -N is used with -H
Diffstat (limited to 'rts/sm/GC.c')
-rw-r--r-- | rts/sm/GC.c | 10 |
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); |