luaur_bytecode/methods/
bytecode_builder_add_debug_remark.rs1use crate::enums::dump_flags::DumpFlags;
2use crate::records::bytecode_builder::BytecodeBuilder;
3use luaur_common::functions::vformat_append::vformatAppend;
4
5impl BytecodeBuilder {
6 pub fn add_debug_remark(&mut self, args: core::fmt::Arguments<'_>) {
7 if (self.dump_flags & (DumpFlags::Dump_Remarks as u32)) == 0 {
8 return;
9 }
10
11 let offset = self.debug_remark_buffer.len();
12
13 vformatAppend(&mut self.debug_remark_buffer, args);
17
18 self.debug_remark_buffer.push('\0');
20
21 self.debug_remarks
22 .push((self.insns.len() as u32, offset as u32));
23
24 let remark_len = self.debug_remark_buffer.as_bytes()[offset..]
25 .iter()
26 .position(|&b| b == 0)
27 .unwrap_or(self.debug_remark_buffer.len() - offset) as i32;
28
29 let remark_str =
30 self.debug_remark_buffer[offset..offset + (remark_len as usize)].to_string();
31
32 self.dump_remarks.push((self.debug_line, remark_str));
33 }
34}