read from machine stack in stackful pre-order iterator (#1812)

This commit is contained in:
Mark
2023-05-26 15:19:07 -06:00
parent 7bc7f0ad06
commit b656700294
10 changed files with 368 additions and 206 deletions

View File

@@ -651,10 +651,12 @@ fn bind_with_occurs_check<U: Unifier>(unifier: &mut U, r: Ref, value: HeapCellVa
let mut occurs_triggered = false;
if !value.is_constant() {
for addr in stackful_preorder_iter(&mut unifier.heap, value) {
let addr = unmark_cell_bits!(addr);
let machine_st: &mut MachineState = unifier.deref_mut();
if let Some(inner_r) = addr.as_var() {
for cell in stackful_preorder_iter(&mut machine_st.heap, &mut machine_st.stack, value) {
let cell = unmark_cell_bits!(cell);
if let Some(inner_r) = cell.as_var() {
if r == inner_r {
occurs_triggered = true;
break;