From: panne Date: Thu, 1 Jul 1999 13:48:22 +0000 (+0000) Subject: [project @ 1999-07-01 13:48:22 by panne] X-Git-Tag: Approximately_9120_patches~6046 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=663f22e676aefe4562fc4d75cf055ad64536f440;p=ghc-hetmet.git [project @ 1999-07-01 13:48:22 by panne] The allocator for mega groups now checks if consecutive megablocks on the free list are contiguous in memory. The omission of this check caused all kinds of funny runtime errors and took away at least five happy years of my life... :-{ --- diff --git a/ghc/rts/BlockAlloc.c b/ghc/rts/BlockAlloc.c index 166ef3a..652b629 100644 --- a/ghc/rts/BlockAlloc.c +++ b/ghc/rts/BlockAlloc.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: BlockAlloc.c,v 1.5 1999/03/26 14:54:43 simonm Exp $ + * $Id: BlockAlloc.c,v 1.6 1999/07/01 13:48:22 panne Exp $ * * (c) The GHC Team 1998-1999 * @@ -128,7 +128,9 @@ allocMegaGroup(nat n) if (bd->blocks == BLOCKS_PER_MBLOCK) { /* whole megablock found */ - if (grp_start == NULL) { /* is it the first one we've found? */ + /* is it the first one we've found or a non-contiguous megablock? */ + if (grp_start == NULL || + bd->start != last->start + MBLOCK_SIZE/sizeof(W_)) { grp_start = bd; grp_prev = last; mbs_found = 1;