pop AND frames when safe to do so, suspend resizing of AND frames until a proper GC is implemented (#244)

This commit is contained in:
Mark Thom
2019-11-30 14:08:02 -07:00
parent 3e49db1a29
commit 0eb20a5d8e
4 changed files with 29 additions and 20 deletions

View File

@@ -423,8 +423,6 @@ pub(crate) trait CallPolicy: Any {
machine_st.e = machine_st.or_stack[b].e;
machine_st.cp = machine_st.or_stack[b].cp.clone();
machine_st.pop_stack_frames();
machine_st.or_stack[b].bp = machine_st.p.clone() + offset;
let old_tr = machine_st.or_stack[b].tr;
@@ -471,8 +469,6 @@ pub(crate) trait CallPolicy: Any {
machine_st.e = machine_st.or_stack[b].e;
machine_st.cp = machine_st.or_stack[b].cp.clone();
machine_st.pop_stack_frames();
machine_st.or_stack[b].bp = machine_st.p.clone() + 1;
let old_tr = machine_st.or_stack[b].tr;
@@ -515,6 +511,8 @@ pub(crate) trait CallPolicy: Any {
machine_st.registers[i] = machine_st.or_stack[b][i].clone();
}
machine_st.pop_stack_frames();
machine_st.num_of_args = n;
machine_st.e = machine_st.or_stack[b].e;
machine_st.cp = machine_st.or_stack[b].cp.clone();
@@ -548,8 +546,6 @@ pub(crate) trait CallPolicy: Any {
machine_st.b = machine_st.or_stack[b].b;
machine_st.or_stack.truncate(machine_st.b);
machine_st.pop_stack_frames();
machine_st.hb = machine_st.heap.h;
machine_st.p += offset;
@@ -564,6 +560,8 @@ pub(crate) trait CallPolicy: Any {
machine_st.registers[i] = machine_st.or_stack[b][i].clone();
}
machine_st.pop_stack_frames();
machine_st.num_of_args = n;
machine_st.e = machine_st.or_stack[b].e;
machine_st.cp = machine_st.or_stack[b].cp.clone();
@@ -597,8 +595,6 @@ pub(crate) trait CallPolicy: Any {
machine_st.b = machine_st.or_stack[b].b;
machine_st.or_stack.truncate(machine_st.b);
machine_st.pop_stack_frames();
machine_st.hb = machine_st.heap.h;
machine_st.p += 1;