From 6a8a8c1c0070783685c196cfd646e706d4ba2f0f Mon Sep 17 00:00:00 2001 From: Rerumu Date: Tue, 5 Jul 2022 16:44:05 -0400 Subject: [PATCH] Fix stack capacity inheritance --- wasm-ast/src/factory.rs | 2 +- wasm-ast/src/stack.rs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/wasm-ast/src/factory.rs b/wasm-ast/src/factory.rs index 778f84b..232cb84 100644 --- a/wasm-ast/src/factory.rs +++ b/wasm-ast/src/factory.rs @@ -280,7 +280,7 @@ impl<'a> Factory<'a> { } }; - self.target.stack = old.stack.split_last(num_param); + self.target.stack = old.stack.split_last(num_param, num_result); old.stack.push_temporary(num_result); diff --git a/wasm-ast/src/stack.rs b/wasm-ast/src/stack.rs index d76b734..dfe97f1 100644 --- a/wasm-ast/src/stack.rs +++ b/wasm-ast/src/stack.rs @@ -46,13 +46,13 @@ impl Stack { self.var_list.len() } - pub fn split_last(&mut self, len: usize) -> Self { - let desired = self.len() - len; + pub fn split_last(&mut self, num_param: usize, num_result: usize) -> Self { + let desired = self.len() - num_param; let var_list = self.var_list.split_off(desired); Self { var_list, - capacity: self.capacity, + capacity: self.capacity.max(desired + num_result), previous: self.previous + desired, } }