mark both components of a PStrLoc (#2082)

This commit is contained in:
Mark
2023-10-07 18:48:49 -06:00
parent c5c7c1913a
commit 1ab14ea519

View File

@@ -80,9 +80,9 @@ impl<'a> EagerStackfulPreOrderHeapIter<'a> {
} }
(HeapCellValueTag::AttrVar | HeapCellValueTag::Var, h) => { (HeapCellValueTag::AttrVar | HeapCellValueTag::Var, h) => {
let var_value = self.heap[h]; let var_value = self.heap[h];
self.heap[h].set_mark_bit(self.mark_phase);
if !(var_value.is_var() && var_value.get_value() as usize == h) { if !(var_value.is_var() && var_value.get_value() as usize == h) {
self.heap[h].set_mark_bit(self.mark_phase);
self.iter_stack.push(var_value); self.iter_stack.push(var_value);
continue; continue;
} }
@@ -99,8 +99,12 @@ impl<'a> EagerStackfulPreOrderHeapIter<'a> {
continue; continue;
} }
let value = self.heap[h+1];
self.heap[h].set_mark_bit(self.mark_phase); self.heap[h].set_mark_bit(self.mark_phase);
self.iter_stack.push(self.heap[h+1]); self.heap[h+1].set_mark_bit(self.mark_phase);
self.iter_stack.push(value);
} }
_ => { _ => {
} }