Skip to main content

luaur_code_gen/functions/
try_find_upvalue_name.rs

1use luaur_vm::macros::getstr::getstr;
2
3macro_rules! CODEGEN_ASSERT {
4    ($expr:expr) => {
5        assert!($expr);
6    };
7}
8
9pub unsafe fn try_find_upvalue_name(
10    proto: *const luaur_vm::records::proto::Proto,
11    upval: i32,
12) -> *const core::ffi::c_char {
13    if !(*proto).upvalues.is_null() {
14        CODEGEN_ASSERT!(upval < (*proto).sizeupvalues as i32);
15
16        let upvalue = *(*proto).upvalues.add(upval as usize);
17        if !upvalue.is_null() {
18            return getstr(upvalue as *const _);
19        }
20    }
21
22    core::ptr::null()
23}