diff options
author | Simon Marlow <marlowsd@gmail.com> | 2009-03-09 12:13:00 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2009-03-09 12:13:00 +0000 |
commit | 9fe7b8ea2136a4a07752b2851840c9366706f832 (patch) | |
tree | cc60d55de58895f8e82432c84711fa0d63544fa2 /rts/sm/Scav.c | |
parent | 1b62aecee4a58f52999cfa53f1c6b7744b29b808 (diff) | |
download | haskell-9fe7b8ea2136a4a07752b2851840c9366706f832.tar.gz |
Redesign 64-bit HEAP_ALLOCED (FIX #2934 at the same time)
After much experimentation, I've found a formulation for HEAP_ALLOCED
that (a) improves performance, and (b) doesn't have any race
conditions when used concurrently. GC performance on x86_64 should be
improved slightly. See extensive comments in MBlock.h for the
details.
Diffstat (limited to 'rts/sm/Scav.c')
-rw-r--r-- | rts/sm/Scav.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/rts/sm/Scav.c b/rts/sm/Scav.c index 732ad15927..34096d489b 100644 --- a/rts/sm/Scav.c +++ b/rts/sm/Scav.c @@ -1372,7 +1372,7 @@ scavenge_one(StgPtr p) * evacuated, so we perform that check here. */ StgClosure *q = ((StgInd *)p)->indirectee; - if (HEAP_ALLOCED(q) && Bdescr((StgPtr)q)->flags & BF_EVACUATED) { + if (HEAP_ALLOCED_GC(q) && Bdescr((StgPtr)q)->flags & BF_EVACUATED) { break; } evacuate(&((StgInd *)p)->indirectee); |