Allow Builder re-use

This commit is contained in:
Rerumu 2022-06-17 22:11:31 -04:00
parent 2fae09e149
commit 34311bd0fb
3 changed files with 10 additions and 6 deletions

View File

@ -224,9 +224,11 @@ fn build_func_list(wasm: &Module, type_info: &TypeInfo) -> Vec<FuncData> {
None => return Vec::new(),
};
let iter = list.iter().enumerate();
let mut builder = Builder::from_type_info(type_info);
iter.map(|f| Builder::from_type_info(type_info).build_indexed(f.0, f.1))
list.iter()
.enumerate()
.map(|f| builder.build_indexed(f.0, f.1))
.collect()
}

View File

@ -223,9 +223,11 @@ fn build_func_list(wasm: &Module, type_info: &TypeInfo) -> Vec<FuncData> {
None => return Vec::new(),
};
let iter = list.iter().enumerate();
let mut builder = Builder::from_type_info(type_info);
iter.map(|f| Builder::from_type_info(type_info).build_indexed(f.0, f.1))
list.iter()
.enumerate()
.map(|f| builder.build_indexed(f.0, f.1))
.collect()
}

View File

@ -340,7 +340,7 @@ impl<'a> Builder<'a> {
}
#[must_use]
pub fn build_anonymous(mut self, list: &[Instruction]) -> FuncData {
pub fn build_anonymous(&mut self, list: &[Instruction]) -> FuncData {
let data = self.build_stat_list(list, 1);
FuncData {
@ -353,7 +353,7 @@ impl<'a> Builder<'a> {
}
#[must_use]
pub fn build_indexed(mut self, index: usize, func: &FuncBody) -> FuncData {
pub fn build_indexed(&mut self, index: usize, func: &FuncBody) -> FuncData {
let arity = &self.type_info.rel_arity_of(self.type_info.len_ex() + index);
let data = self.build_stat_list(func.code().elements(), arity.num_result);