Fix stack capacity inheritance
This commit is contained in:
parent
e58bae6d29
commit
6a8a8c1c00
@ -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);
|
old.stack.push_temporary(num_result);
|
||||||
|
|
||||||
|
@ -46,13 +46,13 @@ impl Stack {
|
|||||||
self.var_list.len()
|
self.var_list.len()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn split_last(&mut self, len: usize) -> Self {
|
pub fn split_last(&mut self, num_param: usize, num_result: usize) -> Self {
|
||||||
let desired = self.len() - len;
|
let desired = self.len() - num_param;
|
||||||
let var_list = self.var_list.split_off(desired);
|
let var_list = self.var_list.split_off(desired);
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
var_list,
|
var_list,
|
||||||
capacity: self.capacity,
|
capacity: self.capacity.max(desired + num_result),
|
||||||
previous: self.previous + desired,
|
previous: self.previous + desired,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user