use eager_stackful_preorder_iter in variable_set, add term_variables/1 tests

This commit is contained in:
Mark
2023-10-04 15:12:25 -06:00
parent 1bfdea7527
commit 0ad4427f83
5 changed files with 106 additions and 14 deletions

View File

@@ -1621,7 +1621,7 @@ impl MachineState {
// returns true on failure.
pub fn ground_test(&mut self) -> bool {
let iter = EagerStackfulPreOrderHeapIter::new(&mut self.heap, self.registers[1]);
let iter = eager_stackful_preorder_iter(&mut self.heap, self.registers[1]);
for term in iter {
if term.is_var() {

View File

@@ -583,20 +583,11 @@ impl MachineState {
seen_set: &mut IndexSet<HeapCellValue, S>,
value: HeapCellValue,
) {
let mut iter = stackful_preorder_iter::<NonListElider>(&mut self.heap, &mut self.stack, value);
let iter = eager_stackful_preorder_iter(&mut self.heap, value);
while let Some(value) = iter.next() {
let value = unmark_cell_bits!(value);
if value.is_var() {
let value = unmark_cell_bits!(heap_bound_store(
iter.heap,
heap_bound_deref(iter.heap, value)
));
if value.is_var() {
seen_set.insert(value);
}
for term in iter {
if term.is_var() {
seen_set.insert(term);
}
}
}