Wed Oct 31 05:51:36 PDT 2007 Simon Marlow <[EMAIL PROTECTED]>
* Refactoring of the GC in preparation for parallel GC
This patch localises the state of the GC into a gc_thread structure,
and reorganises the inner loop of the GC to scavenge one block at a
time from global work lists in each "step". The gc_thread structure
has a "workspace" for each step, in which it collects evacuated
objects until it has a full block to push out to the step's global
list. Details of the algorithm will be on the wiki in due course.
At the moment, THREADED_RTS does not compile, but the single-threaded
GC works (and is 10-20% slower than before).
M ./includes/RtsFlags.h +1
M ./includes/Storage.h -37 +56
M ./rts/Makefile -1 +1
M ./rts/RtsFlags.c +14
M ./rts/sm/Evac.c -79 +89
M ./rts/sm/GC.c -529 +713
M ./rts/sm/GC.h -5 +135
M ./rts/sm/GCUtils.c -33 +132
M ./rts/sm/GCUtils.h -2 +26
M ./rts/sm/MarkWeak.c -1 +1
M ./rts/sm/Scav.c -181 +323
M ./rts/sm/Scav.h -5 +2
M ./rts/sm/Storage.c -8 +10
View patch online:
http://darcs.haskell.org/ghc/_darcs/patches/20071031125136-760e2-0a6a52f6a21fce45424bd1926a21694f8c91faa5.gz
_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc