luaur_repl_cli/records/
profiler.rs1use 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}