Skip to main content

luaur_vm/functions/
enumupval.rs

1use crate::functions::enumedge::enumedge;
2use crate::functions::enumnode::enumnode;
3use crate::macros::gcvalue::gcvalue;
4use crate::macros::iscollectable::iscollectable;
5use crate::macros::obj_2_gco::obj2gco;
6use crate::records::enum_context::EnumContext;
7use crate::records::gc_object::GCObject;
8use crate::type_aliases::up_val::UpVal;
9
10#[allow(non_snake_case)]
11pub(crate) unsafe fn enumupval(ctx: *mut EnumContext, uv: *mut UpVal) {
12    enumnode(
13        ctx,
14        obj2gco!(uv as *mut GCObject),
15        core::mem::size_of::<UpVal>(),
16        core::ptr::null(),
17    );
18
19    if iscollectable!((*uv).v) {
20        enumedge(
21            ctx,
22            obj2gco!(uv as *mut GCObject),
23            gcvalue!((*uv).v),
24            b"value\0" as *const _ as *const core::ffi::c_char,
25        );
26    }
27}