Skip to main content

luaur_code_gen/functions/
get_reload_offset.rs

1use crate::enums::ir_value_kind::IrValueKind;
2use luaur_common::macros::luau_unreachable::LUAU_UNREACHABLE;
3
4pub fn get_reload_offset(kind: IrValueKind) -> i32 {
5    match kind {
6        IrValueKind::Unknown | IrValueKind::None | IrValueKind::Float | IrValueKind::Count => {
7            debug_assert!(false, "Invalid operand restore value kind");
8        }
9        IrValueKind::Tag => {
10            return 8;
11        }
12        IrValueKind::Int | IrValueKind::Int64 | IrValueKind::Pointer | IrValueKind::Double => {
13            return 0;
14        }
15        IrValueKind::Tvalue => {
16            return 0;
17        }
18    }
19
20    debug_assert!(false, "Invalid operand restore value kind");
21    LUAU_UNREACHABLE!();
22}