mmtk/plan/concurrent/
mod.rs

1pub mod barrier;
2pub(super) mod concurrent_marking_work;
3pub(super) mod global;
4
5pub mod immix;
6
7use bytemuck::NoUninit;
8
9/// The pause type for a concurrent GC phase.
10// TODO: This is probably not be general enough for all the concurrent plans.
11// TODO: We could consider moving this to specific plans later.
12#[repr(u8)]
13#[derive(Debug, PartialEq, Eq, Copy, Clone, NoUninit, Default)]
14pub enum Pause {
15    /// A whole GC (including root scanning, closure, releasing, etc.) happening in a single pause.
16    ///
17    /// Don't be confused with "full-heap" GC in generational collectors.  `Pause::Full` can also
18    /// refer to a nursery GC that happens in a single pause.
19    #[default]
20    Full = 1,
21    /// The initial pause before concurrent marking.
22    InitialMark,
23    /// The pause after concurrent marking.
24    FinalMark,
25}
26
27unsafe impl bytemuck::ZeroableInOption for Pause {}
28
29unsafe impl bytemuck::PodInOption for Pause {}