• Ömer Sinan Ağacan's avatar
    rts: Non-concurrent mark and sweep · 68e0647f
    Ömer Sinan Ağacan authored and Ben Gamari's avatar Ben Gamari committed
    This implements the core heap structure and a serial mark/sweep
    collector which can be used to manage the oldest-generation heap.
    This is the first step towards a concurrent mark-and-sweep collector
    aimed at low-latency applications.
    The full design of the collector implemented here is described in detail
    in a technical note
        B. Gamari. "A Concurrent Garbage Collector For the Glasgow Haskell
        Compiler" (2018)
    The basic heap structure used in this design is heavily inspired by
        K. Ueno & A. Ohori. "A fully concurrent garbage collector for
        functional programs on multicore processors." /ACM SIGPLAN Notices/
        Vol. 51. No. 9 (presented by ICFP 2016)
    This design is intended to allow both marking and sweeping
    concurrent to execution of a multi-core mutator. Unlike the Ueno design,
    which requires no global synchronization pauses, the collector
    introduced here requires a stop-the-world pause at the beginning and end
    of the mark phase.
    To avoid heap fragmenta...