Skip to main content

luaur_code_gen/methods/
assembly_builder_x_64_commit.rs

1use crate::records::assembly_builder_x_64::AssemblyBuilderX64;
2
3impl AssemblyBuilderX64 {
4    pub fn commit(&mut self) {
5        // CODEGEN_ASSERT(codePos <= codeEnd);
6        self.instruction_count = self.instruction_count.wrapping_add(1);
7
8        let code_pos = self.code_pos as usize;
9        let code_end = self.code_end as usize;
10
11        if (code_end.wrapping_sub(code_pos)) < u32::from(u16::MAX) as usize {
12            self.extend();
13        }
14    }
15
16    pub fn extend(&mut self) {
17        let count = self.get_code_size();
18
19        let new_size = self.code.len().wrapping_mul(2);
20        self.code.resize(new_size, 0);
21
22        let data_ptr = self.code.as_mut_ptr();
23        self.code_pos = unsafe { data_ptr.add(count as usize) };
24        self.code_end = unsafe { data_ptr.add(self.code.len()) };
25    }
26}