diff --git a/codegen-luajit/src/analyzer/memory.rs b/codegen-luajit/src/analyzer/memory.rs index f9c1f6b..551d6e4 100644 --- a/codegen-luajit/src/analyzer/memory.rs +++ b/codegen-luajit/src/analyzer/memory.rs @@ -6,7 +6,7 @@ use wasm_ast::{ }; struct Visit { - result: BTreeSet, + result: BTreeSet, } impl Visitor for Visit { @@ -27,7 +27,7 @@ impl Visitor for Visit { } } -pub fn visit(func: &Function) -> BTreeSet { +pub fn visit(func: &Function) -> BTreeSet { let mut visit = Visit { result: BTreeSet::new(), }; diff --git a/codegen-luajit/src/gen.rs b/codegen-luajit/src/gen.rs index a1f8016..5697fed 100644 --- a/codegen-luajit/src/gen.rs +++ b/codegen-luajit/src/gen.rs @@ -58,7 +58,7 @@ fn write_func_name(wasm: &Module, index: u32, offset: u32, w: Writer) -> Result< write!(w, "[{}] =", index + offset) } -fn write_in_order(prefix: &str, len: u32, w: Writer) -> Result<()> { +fn write_in_order(prefix: &str, len: usize, w: Writer) -> Result<()> { if len == 0 { return Ok(()); } @@ -104,7 +104,7 @@ fn write_parameter_list(func: &Function, w: Writer) -> Result<()> { write!(w, ")") } -fn write_result_list(range: Range, w: Writer) -> Result<()> { +fn write_result_list(range: Range, w: Writer) -> Result<()> { if range.is_empty() { return Ok(()); } @@ -123,7 +123,7 @@ fn write_result_list(range: Range, w: Writer) -> Result<()> { fn write_variable_list(func: &Function, w: Writer) -> Result<()> { for data in &func.local_data { write!(w, "local ")?; - write_in_order("loc", data.count(), w)?; + write_in_order("loc", data.count().try_into().unwrap(), w)?; write!(w, " = ")?; for i in 0..data.count() { @@ -190,7 +190,7 @@ fn condense_jump_table(list: &[u32]) -> Vec<(usize, usize, u32)> { struct Visitor { label_list: Vec, num_label: usize, - num_param: u32, + num_param: usize, } impl Visitor { @@ -204,12 +204,6 @@ impl Visitor { fn pop_label(&mut self) { self.label_list.pop().unwrap(); } - - fn get_label(&self, up: u32) -> usize { - let last = self.label_list.len() - 1; - - self.label_list[last - up as usize] - } } trait Driver { @@ -234,7 +228,7 @@ impl Driver for Select { } } -fn write_variable(var: u32, v: &Visitor, w: Writer) -> Result<()> { +fn write_variable(var: usize, v: &Visitor, w: Writer) -> Result<()> { if let Some(rem) = var.checked_sub(v.num_param) { write!(w, "loc_{} ", rem) } else { @@ -451,8 +445,8 @@ impl Driver for If { } } -fn write_br_at(up: u32, v: &Visitor, w: Writer) -> Result<()> { - let level = v.get_label(up); +fn write_br_at(up: usize, v: &Visitor, w: Writer) -> Result<()> { + let level = v.label_list.iter().nth_back(up).unwrap(); write!(w, "goto continue_at_{} ", level) } @@ -488,12 +482,12 @@ impl Driver for BrTable { write!(w, "if temp >= {} and temp <= {} then ", start, end)?; } - write_br_at(dest, v, w)?; + write_br_at(dest.try_into().unwrap(), v, w)?; write!(w, "else")?; } write!(w, " ")?; - write_br_at(self.data.default, v, w)?; + write_br_at(self.data.default.try_into().unwrap(), v, w)?; write!(w, "end ") } } diff --git a/codegen-luau/src/analyzer/memory.rs b/codegen-luau/src/analyzer/memory.rs index f9c1f6b..551d6e4 100644 --- a/codegen-luau/src/analyzer/memory.rs +++ b/codegen-luau/src/analyzer/memory.rs @@ -6,7 +6,7 @@ use wasm_ast::{ }; struct Visit { - result: BTreeSet, + result: BTreeSet, } impl Visitor for Visit { @@ -27,7 +27,7 @@ impl Visitor for Visit { } } -pub fn visit(func: &Function) -> BTreeSet { +pub fn visit(func: &Function) -> BTreeSet { let mut visit = Visit { result: BTreeSet::new(), }; diff --git a/codegen-luau/src/gen.rs b/codegen-luau/src/gen.rs index 20b5ecb..e1bcfb5 100644 --- a/codegen-luau/src/gen.rs +++ b/codegen-luau/src/gen.rs @@ -58,7 +58,7 @@ fn write_func_name(wasm: &Module, index: u32, offset: u32, w: Writer) -> Result< write!(w, "[{}] =", index + offset) } -fn write_in_order(prefix: &str, len: u32, w: Writer) -> Result<()> { +fn write_in_order(prefix: &str, len: usize, w: Writer) -> Result<()> { if len == 0 { return Ok(()); } @@ -103,7 +103,7 @@ fn write_parameter_list(func: &Function, w: Writer) -> Result<()> { write!(w, ")") } -fn write_result_list(range: Range, w: Writer) -> Result<()> { +fn write_result_list(range: Range, w: Writer) -> Result<()> { if range.is_empty() { return Ok(()); } @@ -122,7 +122,7 @@ fn write_result_list(range: Range, w: Writer) -> Result<()> { fn write_variable_list(func: &Function, w: Writer) -> Result<()> { for data in &func.local_data { write!(w, "local ")?; - write_in_order("loc", data.count(), w)?; + write_in_order("loc", data.count().try_into().unwrap(), w)?; write!(w, " = ")?; for i in 0..data.count() { @@ -187,7 +187,7 @@ enum Label { #[derive(Default)] struct Visitor { label_list: Vec