luaur_code_gen/records/
ir_builder.rs1use crate::enums::ir_const_kind::IrConstKind;
5use crate::records::host_ir_hooks::HostIrHooks;
6use crate::records::ir_function::IrFunction;
7use crate::records::ir_op::IrOp;
8use alloc::vec::Vec;
9use luaur_common::records::dense_hash_map::DenseHashMap;
10
11#[derive(Debug, Clone, Copy, PartialEq, Eq)]
12pub struct LoopInfo {
13 pub step: IrOp,
14 pub startpc: i32,
15}
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
18pub struct ConstantKey {
19 pub kind: IrConstKind,
20 pub value: u64,
21}
22
23#[derive(Debug)]
24pub struct IrBuilder {
25 pub host_hooks: *const HostIrHooks, pub in_terminated_block: bool,
27 pub interrupt_requested: bool,
28
29 pub active_fastcall_fallback: bool,
30 pub fastcall_fallback_return: IrOp,
31 pub cmd_skip_target: i32,
32
33 pub function: IrFunction,
34
35 pub active_block_idx: u32,
36
37 pub inst_index_to_block: Vec<u32>,
39
40 pub numeric_loop_stack: Vec<LoopInfo>,
41
42 pub constant_map: DenseHashMap<ConstantKey, u32>,
43}