use std::sync::atomic::{AtomicU64, Ordering};
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum Work {
WholeFileWalk,
ScopeAnalysis,
SymbolAllocated,
NameAtCompact,
NameAtFallback,
SymbolAtCompact,
SymbolAtFallback,
}
const WORK_KINDS: usize = Work::SymbolAtFallback as usize + 1;
#[derive(Default, Debug)]
pub struct WorkCounts([AtomicU64; WORK_KINDS]);
impl WorkCounts {
pub(crate) fn add(&self, work: Work, n: u64) {
self.0[work as usize].fetch_add(n, Ordering::Relaxed);
}
pub fn get(&self, work: Work) -> u64 {
self.0[work as usize].load(Ordering::Relaxed)
}
}