attr_var_init_queue_b,
attr_var_init_bindings_b);
- machine_st.truncate_stack();
+ machine_st.stack.truncate(machine_st.b);
machine_st.b = machine_st.stack.index_or_frame(b).prelude.b;
machine_st.hb = machine_st.heap.h;
attr_var_init_bindings_b,
);
- machine_st.truncate_stack();
+ machine_st.stack.truncate(machine_st.b);
machine_st.b = machine_st.stack.index_or_frame(b).prelude.b;
machine_st.hb = machine_st.heap.h;
self.fail = true;
}
- pub(super) fn truncate_stack(&mut self) {
- if self.b > self.e {
- self.stack.truncate_to_frame(self.b);
- }
- }
-
pub(crate) fn is_cyclic_term(&self, addr: Addr) -> bool {
let mut seen = IndexSet::new();
let mut fail = false;
}
}
- pub fn truncate_to_frame(&mut self, b: usize) {
+ pub fn truncate(&mut self, b: usize) {
if b == 0 {
- self.truncate(mem::align_of::<Addr>());
+ self.inner_truncate(mem::align_of::<Addr>());
} else {
- let univ_prelude = self.index_or_frame(b).prelude.univ_prelude;
- let size = OrFrame::size_of(univ_prelude.num_cells);
-
- self.truncate(b + size);
+ self.inner_truncate(b);
}
}
- fn truncate(&mut self, b: usize) {
+ fn inner_truncate(&mut self, b: usize) {
let mut b = b + self.base as usize;
let base = b;