luaur_bytecode/records/
bc_move.rs1use core::marker::PhantomData;
2
3use luaur_common::enums::luau_opcode::LuauOpcode;
4
5use crate::methods::bc_inst_helper_create::BcInstHelperCreate;
6use crate::records::bc_function::{BcFunction, VmConst};
7use crate::records::bc_inst_helper::BcInstHelper;
8use crate::records::bc_op::BcOp;
9use crate::type_aliases::reg::Reg;
10
11#[derive(Debug)]
12pub struct BcMove<'a, T = VmConst> {
13 pub(crate) base: BcInstHelper<'a>,
14 _marker: PhantomData<T>,
15}
16
17impl<'a, T> BcMove<'a, T> {
18 pub fn create(graph: &'a mut BcFunction) -> Self {
19 Self {
20 base: BcInstHelper::create::<Self>(graph),
21 _marker: PhantomData,
22 }
23 }
24
25 pub fn set_src(&mut self, value: BcOp) {
26 self.base.set_bc_op(0, value);
27 }
28
29 pub fn set_out_reg(&mut self, out: Reg) {
30 self.base.set_out_reg(out);
31 }
32
33 pub fn append_to(&mut self, block: BcOp) {
34 self.base.append_to(block);
35 }
36
37 pub fn op(&self) -> BcOp {
38 self.base.op()
39 }
40}
41
42impl<T> BcInstHelperCreate for BcMove<'_, T> {
43 const OPCODE: LuauOpcode = LuauOpcode::LOP_MOVE;
44}