From: simonmar Date: Wed, 28 Nov 2001 14:47:54 +0000 (+0000) Subject: [project @ 2001-11-28 14:47:54 by simonmar] X-Git-Tag: Approximately_9120_patches~496 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=4746806f20ee36532564c9ff691cdcb0da190fd2;p=ghc-hetmet.git [project @ 2001-11-28 14:47:54 by simonmar] Cross fingers and remove code that zeroes the nursery when doing LDV profiling. This was required for two reasons: - the compiler might leave slop between objects when it is allocating. However, it doesn't do this any more: we always move the heap pointer back at the end of a basic block if it turns out we didn't need all the heap, - After a heap check failure, we don't know what the previous value of Hp was, so we don't know where the end of the real data in the current nursery block is. This isn't the case any more, because as a side effect of the fixes to support big-block allocation we always shift Hp back by the required amount after a heap check failure, so now bd->free always points to the byte after the last allocated byte in a nursery block. --- diff --git a/ghc/rts/Storage.c b/ghc/rts/Storage.c index a6c6bd0..b849211 100644 --- a/ghc/rts/Storage.c +++ b/ghc/rts/Storage.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: Storage.c,v 1.56 2001/11/28 14:30:32 simonmar Exp $ + * $Id: Storage.c,v 1.57 2001/11/28 14:47:54 simonmar Exp $ * * (c) The GHC Team, 1998-1999 * @@ -335,19 +335,6 @@ resetNurseries( void ) } #else for (bd = g0s0->blocks; bd; bd = bd->link) { -#ifdef PROFILING - // Reset every word in the nursery to zero when doing LDV profiling. - // This relieves the mutator of the burden of zeroing every new closure, - // which is stored in the nursery. - // - // Todo: make it more efficient, e.g. memcpy() - // - StgPtr p; - if (RtsFlags.ProfFlags.doHeapProfile == HEAP_BY_LDV) { - for (p = bd->start; p < bd->start + BLOCK_SIZE_W; p++) - *p = 0; - } -#endif bd->free = bd->start; ASSERT(bd->gen_no == 0); ASSERT(bd->step == g0s0);