Skip to main content

luaur_repl_cli/records/
profiler.rs

1use alloc::string::String;
2use core::sync::atomic::{AtomicBool, AtomicU64};
3use luaur_common::records::dense_hash_map::DenseHashMap;
4
5#[derive(Debug)]
6pub struct Profiler {
7    pub(crate) callbacks: *mut core::ffi::c_void,
8    pub(crate) frequency: i32,
9    pub(crate) thread: std::thread::JoinHandle<()>,
10    pub(crate) exit: AtomicBool,
11    pub(crate) ticks: AtomicU64,
12    pub(crate) samples: AtomicU64,
13    pub(crate) current_ticks: u64,
14    pub(crate) stack_scratch: String,
15    pub(crate) data: DenseHashMap<String, u64>,
16    pub(crate) gc: [u64; 16],
17}
18
19impl Default for Profiler {
20    fn default() -> Self {
21        Self {
22            callbacks: core::ptr::null_mut(),
23            frequency: 1000,
24            thread: std::thread::spawn(|| {}),
25            exit: AtomicBool::new(false),
26            ticks: AtomicU64::new(0),
27            samples: AtomicU64::new(0),
28            current_ticks: 0,
29            stack_scratch: String::new(),
30            data: DenseHashMap::new(String::new()),
31            gc: [0; 16],
32        }
33    }
34}