Skip to main content

luaur_code_gen/methods/
unwind_builder_dwarf_2_finish_function.rs

1use crate::functions::align_position::align_position;
2use crate::functions::writeu_32::writeu_32;
3use crate::records::unwind_builder_dwarf_2::UnwindBuilderDwarf2;
4
5impl UnwindBuilderDwarf2 {
6    pub fn finish_function(&mut self, begin_offset: u32, end_offset: u32) {
7        if let Some(last_func) = self.unwind_functions.last_mut() {
8            last_func.begin_offset = begin_offset;
9            last_func.end_offset = end_offset;
10        }
11
12        luaur_common::LUAU_ASSERT!(self.fde_entry_start != core::ptr::null_mut());
13
14        unsafe {
15            self.pos = align_position(self.fde_entry_start, self.pos);
16            let length = (self.pos as usize - self.fde_entry_start as usize - 4) as u32;
17            writeu_32(self.fde_entry_start, length);
18        }
19    }
20}