luaur_bytecode/methods/
bc_inst_helper_create.rs1use crate::records::bc_function::BcFunction;
2use crate::records::bc_inst::BcInst;
3use crate::records::bc_inst_helper::BcInstHelper;
4use crate::records::bc_ref::BcRef;
5use luaur_common::enums::luau_opcode::LuauOpcode;
6
7pub trait BcInstHelperCreate {
8 const OPCODE: LuauOpcode;
9}
10
11impl<'a> BcInstHelper<'a> {
12 pub fn create<T>(graph: &'a mut BcFunction) -> BcInstHelper<'a>
13 where
14 T: BcInstHelperCreate,
15 {
16 let op = graph.add_inst();
17 {
18 let inst = graph.inst_op(op);
19 inst.op = T::OPCODE;
20 }
21 let graph_ptr = graph as *mut BcFunction;
22 let inst = unsafe { (*graph_ptr).inst(op) };
23 BcInstHelper::new(unsafe { &mut *graph_ptr }, inst)
24 }
25}