Skip to main content

luaur_vm/macros/
lua_c_barrier.rs

1//! Node: `cxx:Macro:Luau.VM:VM/src/lgc.h:91:lua_c_barrier`
2//! Source: `VM/src/lgc.h`
3
4// VM/src/lgc.h:91 —
5// #define luaC_barrier(L, p, v)
6//     { if (iscollectable(v) && isblack(obj2gco(p)) && iswhite(gcvalue(v)))
7//           luaC_barrierf(L, obj2gco(p), gcvalue(v)); }
8// obj2gco on a typed GC pointer is a plain cast in C.
9#[allow(non_snake_case)]
10#[macro_export]
11macro_rules! luaC_barrier {
12    ($L:expr, $p:expr, $v:expr) => {
13        if $crate::macros::iscollectable::iscollectable!($v)
14            && $crate::macros::isblack::isblack!($p as *mut $crate::records::gc_object::GCObject)
15            && $crate::macros::iswhite::iswhite!($crate::macros::gcvalue::gcvalue!($v))
16        {
17            $crate::functions::lua_c_barrierf::luaC_barrierf(
18                $L,
19                $p as *mut $crate::records::gc_object::GCObject,
20                $crate::macros::gcvalue::gcvalue!($v),
21            );
22        }
23    };
24}
25
26pub use luaC_barrier;
27#[allow(unused_imports)]
28pub use luaC_barrier as lua_c_barrier;