luaur_bytecode/methods/
call_inliner_fill_under_call_arguments.rs1use crate::records::bc_function::VmConst;
2use crate::records::bc_load_nil::BcLoadNil;
3use crate::records::call_inliner::CallInliner;
4use crate::type_aliases::reg::Reg;
5
6impl<'a> CallInliner<'a> {
7 pub fn fill_under_call_arguments(&mut self) {
8 if self.call_params.len() as u8 >= self.target.numparams {
9 return;
10 }
11
12 let inline_entry_block = self.map_block_op(self.target.entry_block);
13 let call_param_size = self.call_params.len() as u8;
14 self.call_params
15 .resize(self.target.numparams as usize, Default::default());
16
17 for param in (call_param_size..self.target.numparams).rev() {
18 let mut load_nil = BcLoadNil::<VmConst>::create(self.caller);
19 load_nil.set_out_reg(self.target_reg + 1 + param);
20 load_nil.prepend_to(inline_entry_block);
21 self.call_params[param as usize] = load_nil.op();
22 }
23 }
24}