luaur_vm/functions/
sort_func.rs1use crate::functions::lua_d_call::lua_d_call;
2use crate::macros::l_isfalse::l_isfalse;
3use crate::macros::setobj_2_s::setobj_2_s;
4use crate::records::lua_state::lua_State;
5use crate::type_aliases::t_value::TValue;
6
7use luaur_common::macros::luau_assert::LUAU_ASSERT;
8
9pub unsafe fn sort_func(L: *mut lua_State, l: *const TValue, r: *const TValue) -> core::ffi::c_int {
10 LUAU_ASSERT!(unsafe { (*L).top == (*L).base.offset(2) }); let top = unsafe { (*L).top };
13 let base = unsafe { (*L).base };
14
15 setobj_2_s!(L, top, base.offset(1));
16 setobj_2_s!(L, top.offset(1), l);
17 setobj_2_s!(L, top.offset(2), r);
18
19 unsafe {
20 (*L).top = top.offset(3); lua_d_call(L, top, 1);
22 (*L).top = (*L).top.offset(-1); (!l_isfalse!((*L).top)) as core::ffi::c_int
25 }
26}