From 0416c30e67e7612623d34d1dd335bd78ac80110f Mon Sep 17 00:00:00 2001 From: Rerumu <25379555+Rerumu@users.noreply.github.com> Date: Sun, 25 Jun 2023 23:27:01 -0400 Subject: [PATCH] Make some stuff `Copy` --- codegen/luajit/src/backend/statement.rs | 10 ++++-- codegen/luau/src/analyzer/br_target.rs | 6 ++-- codegen/luau/src/analyzer/localize.rs | 2 +- codegen/luau/src/backend/statement.rs | 10 ++++-- wasm-ast/src/node.rs | 44 ++++++++++++++----------- wasm-ast/src/visit.rs | 20 +++++------ 6 files changed, 53 insertions(+), 39 deletions(-) diff --git a/codegen/luajit/src/backend/statement.rs b/codegen/luajit/src/backend/statement.rs index 5256f02..09b695b 100644 --- a/codegen/luajit/src/backend/statement.rs +++ b/codegen/luajit/src/backend/statement.rs @@ -38,8 +38,12 @@ impl Driver for Br { } } -fn to_ordered_table<'a>(list: &'a [Br], default: &'a Br) -> Vec<&'a Br> { - let mut data: Vec<_> = list.iter().chain(std::iter::once(default)).collect(); +fn to_ordered_table(list: &[Br], default: Br) -> Vec
{ + let mut data: Vec<_> = list + .iter() + .copied() + .chain(std::iter::once(default)) + .collect(); data.sort_by_key(|v| v.target()); data.dedup_by_key(|v| v.target()); @@ -48,7 +52,7 @@ fn to_ordered_table<'a>(list: &'a [Br], default: &'a Br) -> Vec<&'a Br> { fn write_search_layer( range: Range, - list: &[&Br], + list: &[Br], mng: &mut Manager, w: &mut dyn Write, ) -> Result<()> { diff --git a/codegen/luau/src/analyzer/br_target.rs b/codegen/luau/src/analyzer/br_target.rs index fd20b28..162d57a 100644 --- a/codegen/luau/src/analyzer/br_target.rs +++ b/codegen/luau/src/analyzer/br_target.rs @@ -11,7 +11,7 @@ struct Visit { } impl Visit { - fn set_branch(&mut self, br: &Br) { + fn set_branch(&mut self, br: Br) { if br.target() != 0 { self.has_branch = true; } @@ -19,7 +19,7 @@ impl Visit { } impl Visitor for Visit { - fn visit_br(&mut self, stat: &Br) { + fn visit_br(&mut self, stat: Br) { self.set_branch(stat); } @@ -34,7 +34,7 @@ impl Visitor for Visit { return; } - for target in table.data() { + for &target in table.data() { self.set_branch(target); } diff --git a/codegen/luau/src/analyzer/localize.rs b/codegen/luau/src/analyzer/localize.rs index 4f873de..ed5c1e5 100644 --- a/codegen/luau/src/analyzer/localize.rs +++ b/codegen/luau/src/analyzer/localize.rs @@ -31,7 +31,7 @@ impl Visitor for Visit { self.local_set.insert(("store", name)); } - fn visit_value(&mut self, v: &Value) { + fn visit_value(&mut self, v: Value) { let name = match v { Value::I64(0) => "ZERO", Value::I64(1) => "ONE", diff --git a/codegen/luau/src/backend/statement.rs b/codegen/luau/src/backend/statement.rs index 02a30d1..ffdc9e2 100644 --- a/codegen/luau/src/backend/statement.rs +++ b/codegen/luau/src/backend/statement.rs @@ -47,8 +47,12 @@ impl Driver for Br { } } -fn to_ordered_table<'a>(list: &'a [Br], default: &'a Br) -> Vec<&'a Br> { - let mut data: Vec<_> = list.iter().chain(std::iter::once(default)).collect(); +fn to_ordered_table(list: &[Br], default: Br) -> Vec
{ + let mut data: Vec<_> = list + .iter() + .copied() + .chain(std::iter::once(default)) + .collect(); data.sort_by_key(|v| v.target()); data.dedup_by_key(|v| v.target()); @@ -57,7 +61,7 @@ fn to_ordered_table<'a>(list: &'a [Br], default: &'a Br) -> Vec<&'a Br> { fn write_search_layer( range: Range, - list: &[&Br], + list: &[Br], mng: &mut Manager, w: &mut dyn Write, ) -> Result<()> { diff --git a/wasm-ast/src/node.rs b/wasm-ast/src/node.rs index 8a094d1..7d07cb5 100644 --- a/wasm-ast/src/node.rs +++ b/wasm-ast/src/node.rs @@ -625,35 +625,38 @@ impl Select { } } +#[derive(Clone, Copy)] pub struct Temporary { pub(crate) var: usize, } impl Temporary { #[must_use] - pub const fn var(&self) -> usize { + pub const fn var(self) -> usize { self.var } } +#[derive(Clone, Copy)] pub struct Local { pub(crate) var: usize, } impl Local { #[must_use] - pub const fn var(&self) -> usize { + pub const fn var(self) -> usize { self.var } } +#[derive(Clone, Copy)] pub struct GetGlobal { pub(crate) var: usize, } impl GetGlobal { #[must_use] - pub const fn var(&self) -> usize { + pub const fn var(self) -> usize { self.var } } @@ -687,6 +690,7 @@ impl LoadAt { } } +#[derive(Clone, Copy)] pub struct MemorySize { pub(crate) memory: usize, } @@ -828,6 +832,7 @@ impl ResultList { } } +#[derive(Clone, Copy)] pub struct Align { pub(crate) new: usize, pub(crate) old: usize, @@ -836,21 +841,22 @@ pub struct Align { impl Align { #[must_use] - pub const fn is_aligned(&self) -> bool { + pub const fn is_aligned(self) -> bool { self.length == 0 || self.new == self.old } #[must_use] - pub const fn new_range(&self) -> ResultList { + pub const fn new_range(self) -> ResultList { ResultList::new(self.new, self.new + self.length) } #[must_use] - pub const fn old_range(&self) -> ResultList { + pub const fn old_range(self) -> ResultList { ResultList::new(self.old, self.old + self.length) } } +#[derive(Clone, Copy)] pub struct Br { pub(crate) target: usize, pub(crate) align: Align, @@ -858,13 +864,13 @@ pub struct Br { impl Br { #[must_use] - pub const fn target(&self) -> usize { + pub const fn target(self) -> usize { self.target } #[must_use] - pub const fn align(&self) -> &Align { - &self.align + pub const fn align(self) -> Align { + self.align } } @@ -886,8 +892,8 @@ impl BrTable { } #[must_use] - pub const fn default(&self) -> &Br { - &self.default + pub const fn default(&self) -> Br { + self.default } } @@ -939,8 +945,8 @@ impl BrIf { } #[must_use] - pub const fn target(&self) -> &Br { - &self.target + pub const fn target(&self) -> Br { + self.target } } @@ -1026,8 +1032,8 @@ pub struct SetTemporary { impl SetTemporary { #[must_use] - pub const fn var(&self) -> &Temporary { - &self.var + pub const fn var(&self) -> Temporary { + self.var } #[must_use] @@ -1043,8 +1049,8 @@ pub struct SetLocal { impl SetLocal { #[must_use] - pub const fn var(&self) -> &Local { - &self.var + pub const fn var(&self) -> Local { + self.var } #[must_use] @@ -1118,8 +1124,8 @@ impl MemoryGrow { } #[must_use] - pub const fn result(&self) -> &Temporary { - &self.result + pub const fn result(&self) -> Temporary { + self.result } #[must_use] diff --git a/wasm-ast/src/visit.rs b/wasm-ast/src/visit.rs index 5a13e79..ffc3a21 100644 --- a/wasm-ast/src/visit.rs +++ b/wasm-ast/src/visit.rs @@ -7,17 +7,17 @@ use crate::node::{ pub trait Visitor { fn visit_select(&mut self, _: &Select) {} - fn visit_get_temporary(&mut self, _: &Temporary) {} + fn visit_get_temporary(&mut self, _: Temporary) {} - fn visit_get_local(&mut self, _: &Local) {} + fn visit_get_local(&mut self, _: Local) {} - fn visit_get_global(&mut self, _: &GetGlobal) {} + fn visit_get_global(&mut self, _: GetGlobal) {} fn visit_load_at(&mut self, _: &LoadAt) {} fn visit_memory_size(&mut self, _: &MemorySize) {} - fn visit_value(&mut self, _: &Value) {} + fn visit_value(&mut self, _: Value) {} fn visit_un_op(&mut self, _: &UnOp) {} @@ -29,7 +29,7 @@ pub trait Visitor { fn visit_unreachable(&mut self) {} - fn visit_br(&mut self, _: &Br) {} + fn visit_br(&mut self, _: Br) {} fn visit_br_table(&mut self, _: &BrTable) {} @@ -78,19 +78,19 @@ impl Driver for Select { impl Driver for Temporary { fn accept(&self, visitor: &mut T) { - visitor.visit_get_temporary(self); + visitor.visit_get_temporary(*self); } } impl Driver for Local { fn accept(&self, visitor: &mut T) { - visitor.visit_get_local(self); + visitor.visit_get_local(*self); } } impl Driver for GetGlobal { fn accept(&self, visitor: &mut T) { - visitor.visit_get_global(self); + visitor.visit_get_global(*self); } } @@ -130,7 +130,7 @@ impl Driver for MemoryFill { impl Driver for Value { fn accept(&self, visitor: &mut T) { - visitor.visit_value(self); + visitor.visit_value(*self); } } @@ -181,7 +181,7 @@ impl Driver for Expression { impl Driver for Br { fn accept(&self, visitor: &mut T) { - visitor.visit_br(self); + visitor.visit_br(*self); } }