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 {}