-- | Split the heap contained in a machine state in three parts: the dead
-- objects that can safely be discarded, a maping from old to new addresses if
-- definitions were moved, and the final state with a cleaned up heap.
splitHeapWith
    :: GarbageCollectionAlgorithm
    -> StgState
    -> (Set MemAddr, Map MemAddr MemAddr, StgState)
splitHeapWith (GarbageCollectionAlgorithm _name gc) = gc
splitHeapWith
    :: GarbageCollectionAlgorithm
    -> StgState
    -> (Set MemAddr, Map MemAddr MemAddr, StgState)
splitHeapWith (GarbageCollectionAlgorithm _name gc) = gc
splitHeapWith (GarbageCollectionAlgorithm _name gc) = gc