pub type MarkSweepSpace<VM> = MarkSweepSpace<VM>;

Aliased Type§

struct MarkSweepSpace<VM> {
    pub common: CommonSpace<VM>,
    pr: BlockPageResource<VM, Block>,
    chunk_map: ChunkMap,
    scheduler: Arc<GCWorkScheduler<VM>>,
    abandoned: Mutex<AbandonedBlockLists>,
    abandoned_in_gc: Mutex<AbandonedBlockLists>,
    pending_release_packets: AtomicUsize,
}

Fields§

§common: CommonSpace<VM>§pr: BlockPageResource<VM, Block>§chunk_map: ChunkMap

Allocation status for all chunks in MS space

§scheduler: Arc<GCWorkScheduler<VM>>

Work packet scheduler

§abandoned: Mutex<AbandonedBlockLists>

Abandoned blocks. If a mutator dies, all its blocks go to this abandoned block lists. We reuse blocks in these lists in the mutator phase. The space needs to do the release work for these block lists.

§abandoned_in_gc: Mutex<AbandonedBlockLists>

Abandoned blocks during a GC. Each allocator finishes doing release work, and returns their local blocks to the global lists. Thus we do not need to do release work for these block lists in the space. These lists are only filled in the release phase, and will be moved to the abandoned lists above at the end of a GC.

§pending_release_packets: AtomicUsize

Count the number of pending ReleaseMarkSweepSpace and ReleaseMutator work packets during the Release stage.