} else {
debug_assert!(cell.is_ref());
- let h = cell.get_value() as usize;
+ let h = if cell.get_tag() == HeapCellValueTag::PStrLoc {
+ self.iter.focus().value()
+ } else {
+ cell.get_value()
+ } as usize;
+
self.iter.push_stack(IterStackLoc::iterable_loc(
h,
HeapOrStackTag::Heap,
orig_cell = cell;
continue;
}
- }
+ };
}
}
)
);
- for var in term_write_result.var_dict.values_mut() {
- *var = heap_bound_deref(&self.heap, *var);
- }
-
let mut var_list = Vec::with_capacity(singleton_var_set.len());
for (var_name, addr) in term_write_result.var_dict {