From bfb3164a0d766035de382e653de01b1e56f1feed Mon Sep 17 00:00:00 2001 From: Nicolas Luck Date: Wed, 23 Aug 2023 14:36:07 +0200 Subject: [PATCH] Enable multiple Machines per process by having ATOM_TABLE_BUF_BASE always be thread_local, not only in cfg(test) mode. --- src/atom_table.rs | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/src/atom_table.rs b/src/atom_table.rs index 48f50ec9..11693484 100644 --- a/src/atom_table.rs +++ b/src/atom_table.rs @@ -40,17 +40,11 @@ impl From for Atom { const ATOM_TABLE_INIT_SIZE: usize = 1 << 16; const ATOM_TABLE_ALIGN: usize = 8; -#[cfg(test)] thread_local! { static ATOM_TABLE_BUF_BASE: std::cell::RefCell<*const u8> = std::cell::RefCell::new(ptr::null_mut()); } -#[cfg(not(test))] -static ATOM_TABLE_BUF_BASE: std::sync::atomic::AtomicPtr = - std::sync::atomic::AtomicPtr::new(ptr::null_mut()); - fn set_atom_tbl_buf_base(old_ptr: *const u8, new_ptr: *const u8) -> Result<(), *const u8> { -#[cfg(test)] { ATOM_TABLE_BUF_BASE.with(|atom_table_buf_base| { let mut borrow = atom_table_buf_base.borrow_mut(); @@ -62,30 +56,12 @@ fn set_atom_tbl_buf_base(old_ptr: *const u8, new_ptr: *const u8) -> Result<(), * } })?; }; - #[cfg(not(test))] - { - ATOM_TABLE_BUF_BASE - .compare_exchange( - old_ptr.cast_mut(), - new_ptr.cast_mut(), - std::sync::atomic::Ordering::Relaxed, - std::sync::atomic::Ordering::Relaxed, - ) - .map_err(|ptr| ptr.cast_const()) - }?; Ok(()) } pub(crate) fn get_atom_tbl_buf_base() -> *const u8 { - #[cfg(test)] - { ATOM_TABLE_BUF_BASE.with(|atom_table_buf_base| *atom_table_buf_base.borrow()) } -#[cfg(not(test))] - { - ATOM_TABLE_BUF_BASE.load(std::sync::atomic::Ordering::Relaxed) - } -} #[test] #[should_panic(expected = "Overwriting atom table base pointer")] -- 2.54.0