diff --git a/codegen/luajit/src/backend/expression.rs b/codegen/luajit/src/backend/expression.rs index 31194ef..7da904e 100644 --- a/codegen/luajit/src/backend/expression.rs +++ b/codegen/luajit/src/backend/expression.rs @@ -10,9 +10,7 @@ use wasm_ast::node::{ use crate::analyzer::as_symbol::AsSymbol; -use super::manager::{ - write_cmp_op, write_condition, write_separated, write_variable, Driver, Manager, -}; +use super::manager::{write_cmp_op, write_condition, write_separated, Driver, Manager}; macro_rules! impl_write_number { ($name:tt, $numeric:ty) => { @@ -47,8 +45,8 @@ impl Driver for GetTemporary { } impl Driver for GetLocal { - fn write(&self, mng: &mut Manager, w: &mut dyn Write) -> Result<()> { - write_variable(self.var(), mng, w) + fn write(&self, _: &mut Manager, w: &mut dyn Write) -> Result<()> { + write!(w, "loc_{} ", self.var()) } } diff --git a/codegen/luajit/src/backend/manager.rs b/codegen/luajit/src/backend/manager.rs index c135608..c42a853 100644 --- a/codegen/luajit/src/backend/manager.rs +++ b/codegen/luajit/src/backend/manager.rs @@ -13,7 +13,6 @@ pub struct Manager { table_map: HashMap, label_list: Vec, num_label: usize, - num_param: usize, } impl Manager { @@ -27,10 +26,6 @@ impl Manager { self.table_map = map; } - pub fn set_num_param(&mut self, num: usize) { - self.num_param = num; - } - pub fn label_list(&self) -> &[usize] { &self.label_list } @@ -71,14 +66,6 @@ pub fn write_ascending(prefix: &str, range: Range, w: &mut dyn Write) -> write_separated(range, |i, w| write!(w, "{prefix}_{i}"), w) } -pub fn write_variable(var: usize, mng: &Manager, w: &mut dyn Write) -> Result<()> { - if let Some(rem) = var.checked_sub(mng.num_param) { - write!(w, "loc_{rem} ") - } else { - write!(w, "param_{var} ") - } -} - pub fn write_cmp_op(cmp: &CmpOp, mng: &mut Manager, w: &mut dyn Write) -> Result<()> { if let Some(symbol) = cmp.op_type().as_symbol() { cmp.lhs().write(mng, w)?; diff --git a/codegen/luajit/src/backend/statement.rs b/codegen/luajit/src/backend/statement.rs index 1b5ea30..527ebb8 100644 --- a/codegen/luajit/src/backend/statement.rs +++ b/codegen/luajit/src/backend/statement.rs @@ -11,9 +11,7 @@ use wasmparser::ValType; use crate::analyzer::br_table; -use super::manager::{ - write_ascending, write_condition, write_separated, write_variable, Driver, Manager, -}; +use super::manager::{write_ascending, write_condition, write_separated, Driver, Manager}; impl Driver for Br { fn write(&self, mng: &mut Manager, w: &mut dyn Write) -> Result<()> { @@ -223,8 +221,7 @@ impl Driver for SetTemporary { impl Driver for SetLocal { fn write(&self, mng: &mut Manager, w: &mut dyn Write) -> Result<()> { - write_variable(self.var(), mng, w)?; - write!(w, "= ")?; + write!(w, "loc_{} = ", self.var())?; self.value().write(mng, w) } } @@ -281,12 +278,12 @@ impl Driver for Statement { fn write_parameter_list(ast: &FuncData, w: &mut dyn Write) -> Result<()> { write!(w, "function(")?; - write_ascending("param", 0..ast.num_param(), w)?; + write_ascending("loc", 0..ast.num_param(), w)?; write!(w, ")") } fn write_variable_list(ast: &FuncData, w: &mut dyn Write) -> Result<()> { - let mut total = 0; + let mut total = ast.num_param(); for data in ast.local_data().iter().filter(|v| v.0 != 0) { let range = total..total + usize::try_from(data.0).unwrap(); @@ -322,7 +319,6 @@ impl Driver for FuncData { } mng.set_table_map(br_map); - mng.set_num_param(self.num_param()); self.code().write(mng, w)?; if self.num_result() != 0 { diff --git a/codegen/luau/src/backend/expression.rs b/codegen/luau/src/backend/expression.rs index 4590700..77662bf 100644 --- a/codegen/luau/src/backend/expression.rs +++ b/codegen/luau/src/backend/expression.rs @@ -10,9 +10,7 @@ use wasm_ast::node::{ use crate::analyzer::as_symbol::AsSymbol; -use super::manager::{ - write_cmp_op, write_condition, write_separated, write_variable, Driver, Manager, -}; +use super::manager::{write_cmp_op, write_condition, write_separated, Driver, Manager}; macro_rules! impl_write_number { ($name:tt, $numeric:ty) => { @@ -47,8 +45,8 @@ impl Driver for GetTemporary { } impl Driver for GetLocal { - fn write(&self, mng: &mut Manager, w: &mut dyn Write) -> Result<()> { - write_variable(self.var(), mng, w) + fn write(&self, _: &mut Manager, w: &mut dyn Write) -> Result<()> { + write!(w, "loc_{} ", self.var()) } } diff --git a/codegen/luau/src/backend/manager.rs b/codegen/luau/src/backend/manager.rs index cc5a3dd..7927e34 100644 --- a/codegen/luau/src/backend/manager.rs +++ b/codegen/luau/src/backend/manager.rs @@ -12,7 +12,6 @@ use crate::analyzer::as_symbol::AsSymbol; pub struct Manager { table_map: HashMap, label_list: Vec>, - num_param: usize, } impl Manager { @@ -26,10 +25,6 @@ impl Manager { self.table_map = map; } - pub fn set_num_param(&mut self, num_param: usize) { - self.num_param = num_param; - } - pub fn label_list(&self) -> &[Option] { &self.label_list } @@ -67,14 +62,6 @@ pub fn write_ascending(prefix: &str, range: Range, w: &mut dyn Write) -> write_separated(range, |i, w| write!(w, "{prefix}_{i}"), w) } -pub fn write_variable(var: usize, mng: &Manager, w: &mut dyn Write) -> Result<()> { - if let Some(rem) = var.checked_sub(mng.num_param) { - write!(w, "loc_{rem} ") - } else { - write!(w, "param_{var} ") - } -} - pub fn write_cmp_op(cmp: &CmpOp, mng: &mut Manager, w: &mut dyn Write) -> Result<()> { if let Some(symbol) = cmp.op_type().as_symbol() { cmp.lhs().write(mng, w)?; diff --git a/codegen/luau/src/backend/statement.rs b/codegen/luau/src/backend/statement.rs index 3d755f2..cc4661c 100644 --- a/codegen/luau/src/backend/statement.rs +++ b/codegen/luau/src/backend/statement.rs @@ -11,9 +11,7 @@ use wasmparser::ValType; use crate::analyzer::br_target; -use super::manager::{ - write_ascending, write_condition, write_separated, write_variable, Driver, Manager, -}; +use super::manager::{write_ascending, write_condition, write_separated, Driver, Manager}; impl Driver for Br { fn write(&self, mng: &mut Manager, w: &mut dyn Write) -> Result<()> { @@ -237,8 +235,7 @@ impl Driver for SetTemporary { impl Driver for SetLocal { fn write(&self, mng: &mut Manager, w: &mut dyn Write) -> Result<()> { - write_variable(self.var(), mng, w)?; - write!(w, "= ")?; + write!(w, "loc_{} = ", self.var())?; self.value().write(mng, w) } } @@ -295,12 +292,12 @@ impl Driver for Statement { fn write_parameter_list(ast: &FuncData, w: &mut dyn Write) -> Result<()> { write!(w, "function(")?; - write_ascending("param", 0..ast.num_param(), w)?; + write_ascending("loc", 0..ast.num_param(), w)?; write!(w, ")") } fn write_variable_list(ast: &FuncData, w: &mut dyn Write) -> Result<()> { - let mut total = 0; + let mut total = ast.num_param(); for data in ast.local_data().iter().filter(|v| v.0 != 0) { let range = total..total + usize::try_from(data.0).unwrap(); @@ -344,7 +341,6 @@ impl Driver for FuncData { } mng.set_table_map(br_data.0); - mng.set_num_param(self.num_param()); self.code().write(mng, w)?; if self.num_result() != 0 {