From eea6454f0bcbec6c6612e963cd85702c475ef146 Mon Sep 17 00:00:00 2001 From: "simonmar@microsoft.com" Date: Thu, 13 Dec 2007 16:45:25 +0000 Subject: [PATCH] use synchronised version of freeChain() in scavenge_mutable_list() --- rts/sm/GCUtils.c | 8 ++++++++ rts/sm/GCUtils.h | 1 + rts/sm/Scav.c | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) 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; } -- 1.7.10.4