add backtracking of attributed variable data
This commit is contained in:
@@ -441,11 +441,10 @@ pub(crate) trait CallPolicy: Any {
|
||||
|
||||
machine_st.heap.truncate(machine_st.stack.index_or_frame(b).prelude.h);
|
||||
|
||||
let attr_var_init_b = machine_st.stack.index_or_frame(b).prelude.attr_var_init_b;
|
||||
machine_st
|
||||
.attr_var_init
|
||||
.attr_var_queue
|
||||
.truncate(attr_var_init_b);
|
||||
let attr_var_init_queue_b = machine_st.stack.index_or_frame(b).prelude.attr_var_init_queue_b;
|
||||
let attr_var_init_bindings_b = machine_st.stack.index_or_frame(b).prelude.attr_var_init_bindings_b;
|
||||
|
||||
machine_st.attr_var_init.backtrack(attr_var_init_queue_b, attr_var_init_bindings_b);
|
||||
|
||||
machine_st.hb = machine_st.heap.h;
|
||||
machine_st.p += 1;
|
||||
@@ -485,11 +484,10 @@ pub(crate) trait CallPolicy: Any {
|
||||
|
||||
machine_st.heap.truncate(machine_st.stack.index_or_frame(b).prelude.h);
|
||||
|
||||
let attr_var_init_b = machine_st.stack.index_or_frame(b).prelude.attr_var_init_b;
|
||||
machine_st
|
||||
.attr_var_init
|
||||
.attr_var_queue
|
||||
.truncate(attr_var_init_b);
|
||||
let attr_var_init_queue_b = machine_st.stack.index_or_frame(b).prelude.attr_var_init_queue_b;
|
||||
let attr_var_init_bindings_b = machine_st.stack.index_or_frame(b).prelude.attr_var_init_bindings_b;
|
||||
|
||||
machine_st.attr_var_init.backtrack(attr_var_init_queue_b, attr_var_init_bindings_b);
|
||||
|
||||
machine_st.hb = machine_st.heap.h;
|
||||
machine_st.p += offset;
|
||||
@@ -527,11 +525,10 @@ pub(crate) trait CallPolicy: Any {
|
||||
|
||||
machine_st.heap.truncate(machine_st.stack.index_or_frame(b).prelude.h);
|
||||
|
||||
let attr_var_init_b = machine_st.stack.index_or_frame(b).prelude.attr_var_init_b;
|
||||
machine_st
|
||||
.attr_var_init
|
||||
.attr_var_queue
|
||||
.truncate(attr_var_init_b);
|
||||
let attr_var_init_queue_b = machine_st.stack.index_or_frame(b).prelude.attr_var_init_queue_b;
|
||||
let attr_var_init_bindings_b = machine_st.stack.index_or_frame(b).prelude.attr_var_init_bindings_b;
|
||||
|
||||
machine_st.attr_var_init.backtrack(attr_var_init_queue_b, attr_var_init_bindings_b);
|
||||
|
||||
machine_st.b = machine_st.stack.index_or_frame(b).prelude.b;
|
||||
machine_st.truncate_stack();
|
||||
@@ -572,11 +569,10 @@ pub(crate) trait CallPolicy: Any {
|
||||
|
||||
machine_st.heap.truncate(machine_st.stack.index_or_frame(b).prelude.h);
|
||||
|
||||
let attr_var_init_b = machine_st.stack.index_or_frame(b).prelude.attr_var_init_b;
|
||||
machine_st
|
||||
.attr_var_init
|
||||
.attr_var_queue
|
||||
.truncate(attr_var_init_b);
|
||||
let attr_var_init_queue_b = machine_st.stack.index_or_frame(b).prelude.attr_var_init_queue_b;
|
||||
let attr_var_init_bindings_b = machine_st.stack.index_or_frame(b).prelude.attr_var_init_bindings_b;
|
||||
|
||||
machine_st.attr_var_init.backtrack(attr_var_init_queue_b, attr_var_init_bindings_b);
|
||||
|
||||
machine_st.b = machine_st.stack.index_or_frame(b).prelude.b;
|
||||
machine_st.truncate_stack();
|
||||
|
||||
Reference in New Issue
Block a user