From 663f22e676aefe4562fc4d75cf055ad64536f440 Mon Sep 17 00:00:00 2001 From: panne Date: Thu, 1 Jul 1999 13:48:22 +0000 Subject: [PATCH] [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... :-{ --- ghc/rts/BlockAlloc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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; -- 1.7.10.4