Skip to main content

luaur_vm/macros/
lua_c_objectbarrier.rs

1use crate::functions::lua_c_barrierback::lua_c_barrierback;
2use crate::macros::isblack::isblack;
3use crate::macros::obj_2_gco::obj2gco;
4use crate::records::gc_object::GCObject;
5
6#[allow(non_snake_case)]
7#[macro_export]
8macro_rules! luaC_objectbarrier {
9    ($l:expr) => {{
10        let obj = $crate::macros::obj_2_gco::obj2gco!($l);
11        if $crate::macros::isblack::isblack!(obj) {
12            unsafe {
13                $crate::functions::lua_c_barrierback::lua_c_barrierback(
14                    core::ptr::null_mut(),
15                    obj as *mut $crate::records::gc_object::GCObject,
16                    &mut (*($l)).gclist,
17                )
18            }
19        }
20    }};
21}
22
23pub use luaC_objectbarrier;