Skip to main content

luaur_code_gen/methods/
assembly_builder_x_64_place_imm_32.rs

1use crate::macros::codegen_assert::CODEGEN_ASSERT;
2use crate::records::assembly_builder_x_64::AssemblyBuilderX64;
3
4impl AssemblyBuilderX64 {
5    pub fn place_imm_32(&mut self, imm: i32) {
6        let pos = self.code_pos;
7        if !((pos as usize).wrapping_add(core::mem::size_of_val(&imm)) < self.code_end as usize) {
8            luaur_common::LUAU_DEBUGBREAK!();
9        }
10        unsafe {
11            core::ptr::copy_nonoverlapping(
12                imm.to_le_bytes().as_ptr(),
13                pos,
14                core::mem::size_of_val(&imm),
15            );
16            self.code_pos = pos.add(core::mem::size_of_val(&imm));
17        }
18    }
19}