• Simon Marlow's avatar
    Refactoring of the GC in preparation for parallel GC · d5bd3e82
    Simon Marlow authored
    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).
RtsFlags.c 74.9 KB