diff --git a/crates/console/prometeu-bytecode/src/value.rs b/crates/console/prometeu-bytecode/src/value.rs index c38f7cdb..40ca770c 100644 --- a/crates/console/prometeu-bytecode/src/value.rs +++ b/crates/console/prometeu-bytecode/src/value.rs @@ -1,10 +1,12 @@ use serde::{Deserialize, Serialize}; +use std::cell::Cell; use std::cmp::Ordering; use std::fmt::Write; -use std::sync::atomic::{AtomicU64, Ordering as AtomicOrdering}; use std::sync::Arc; -static STRING_MATERIALIZATION_COUNT: AtomicU64 = AtomicU64::new(0); +thread_local! { + static STRING_MATERIALIZATION_COUNT: Cell = const { Cell::new(0) }; +} /// Opaque handle that references an object stored in the VM heap. /// @@ -83,7 +85,7 @@ impl Value { where S: Into>, { - STRING_MATERIALIZATION_COUNT.fetch_add(1, AtomicOrdering::Relaxed); + STRING_MATERIALIZATION_COUNT.with(|count| count.set(count.get() + 1)); Value::String(value.into()) } @@ -149,7 +151,7 @@ impl Value { } pub fn string_materialization_count() -> u64 { - STRING_MATERIALIZATION_COUNT.load(AtomicOrdering::Relaxed) + STRING_MATERIALIZATION_COUNT.with(Cell::get) } #[cfg(test)]