diff --git a/ghc/rts/GC.c b/ghc/rts/GC.c index 4ea369414122a3e43762248b7434bbfc5fa409a3..45d1422ee42ee5b4c24626c8dc1201e45c7b25bb 100644 --- a/ghc/rts/GC.c +++ b/ghc/rts/GC.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: GC.c,v 1.39 1999/02/24 16:25:40 simonm Exp $ + * $Id: GC.c,v 1.40 1999/02/24 16:30:45 simonm Exp $ * * (c) The GHC Team 1998-1999 * @@ -2247,7 +2247,15 @@ scavenge_stack(StgPtr p, StgPtr stack_end) } continue; } - step = bd->step->to; + + /* Don't promote blackholes */ + step = bd->step; + if (!(step->gen->no == 0 && + step->no != 0 && + step->no == step->gen->n_steps-1)) { + step = step->to; + } + switch (type) { case BLACKHOLE: case CAF_BLACKHOLE: