From: simonmar@microsoft.com Date: Thu, 13 Dec 2007 16:45:25 +0000 (+0000) Subject: use synchronised version of freeChain() in scavenge_mutable_list() X-Git-Tag: Before_cabalised-GHC~273 X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=eea6454f0bcbec6c6612e963cd85702c475ef146 use synchronised version of freeChain() in scavenge_mutable_list() --- diff --git a/rts/sm/GCUtils.c b/rts/sm/GCUtils.c index a8f0099..103430a 100644 --- a/rts/sm/GCUtils.c +++ b/rts/sm/GCUtils.c @@ -33,6 +33,14 @@ allocBlock_sync(void) return bd; } +void +freeChain_sync(bdescr *bd) +{ + ACQUIRE_SPIN_LOCK(&gc_alloc_block_sync); + freeChain(bd); + RELEASE_SPIN_LOCK(&gc_alloc_block_sync); +} + /* ----------------------------------------------------------------------------- Workspace utilities -------------------------------------------------------------------------- */ diff --git a/rts/sm/GCUtils.h b/rts/sm/GCUtils.h index 57c3b0c..a121dbd 100644 --- a/rts/sm/GCUtils.h +++ b/rts/sm/GCUtils.h @@ -18,6 +18,7 @@ extern SpinLock gc_alloc_block_sync; #endif bdescr *allocBlock_sync(void); +void freeChain_sync(bdescr *bd); void push_scan_block (bdescr *bd, step_workspace *ws); bdescr *grab_todo_block (step_workspace *ws); diff --git a/rts/sm/Scav.c b/rts/sm/Scav.c index 7ee97c9..0f06ee9 100644 --- a/rts/sm/Scav.c +++ b/rts/sm/Scav.c @@ -1052,7 +1052,7 @@ scavenge_mutable_list(generation *gen) } // free the old mut_list - freeChain(gen->saved_mut_list); + freeChain_sync(gen->saved_mut_list); gen->saved_mut_list = NULL; }