Skip to main content

luaur_vm/functions/
lua_e_freethread.rs

1//! Node: `cxx:Function:Luau.VM:VM/src/lstate.cpp:130:luaE_freethread`
2//! Source: `VM/src/lstate.cpp:130-138` (hand-ported)
3
4use crate::functions::freestack::freestack;
5use crate::functions::lua_m_freegco::luaM_freegco_;
6use crate::records::lua_page::lua_Page;
7use crate::type_aliases::lua_state::lua_State;
8
9#[allow(non_snake_case)]
10pub unsafe fn luaE_freethread(L: *mut lua_State, L1: *mut lua_State, page: *mut lua_Page) {
11    let g = (*L).global;
12    if let Some(userthread) = (*g).cb.userthread {
13        userthread(core::ptr::null_mut(), L1);
14    }
15
16    freestack(L, L1);
17    luaM_freegco_(
18        L,
19        L1 as *mut crate::records::gc_object::GCObject,
20        core::mem::size_of::<lua_State>(),
21        (*L1).hdr.memcat,
22        page,
23    );
24}
25
26#[allow(unused_imports)]
27pub use luaE_freethread as lua_e_freethread;