Skip to main content

luaur_code_gen/functions/
luau_reg_extra.rs

1use crate::enums::size_x_64::SizeX64;
2use crate::records::operand_x_64::OperandX64;
3use crate::records::register_x_64::RegisterX64;
4use luaur_vm::type_aliases::t_value::TValue;
5
6/// Returns an operand for the extra field of a TValue in a Luau register.
7///
8/// C++: dword[rBase + ri * sizeof(TValue) + offsetof(TValue, extra)]
9#[inline]
10pub fn luau_reg_extra(ri: i32) -> OperandX64 {
11    let tvalue_size = core::mem::size_of::<TValue>() as i32;
12    let extra_offset = core::mem::offset_of!(TValue, extra) as i32;
13
14    OperandX64::operand_x_64_size_x_64_register_x_64_u8_register_x_64_i32(
15        SizeX64::dword,
16        RegisterX64::noreg,
17        1,
18        RegisterX64::r14,
19        ri * tvalue_size + extra_offset,
20    )
21}