luaur_vm/functions/
lua_clock.rs1use crate::functions::clock_period::clock_period;
2use crate::functions::clock_timestamp::clock_timestamp;
3
4pub fn lua_clock() -> f64 {
5 use core::sync::atomic::{AtomicU64, Ordering};
6
7 static PERIOD_BITS: AtomicU64 = AtomicU64::new(0);
8
9 let mut bits = PERIOD_BITS.load(Ordering::Relaxed);
10
11 if bits == 0 {
12 let p = clock_period();
13 bits = p.to_bits();
14 PERIOD_BITS.store(bits, Ordering::Relaxed);
15 }
16
17 let period = f64::from_bits(bits);
18 clock_timestamp() * period
19}