From: Mark Thom Date: Wed, 6 Apr 2022 03:02:39 +0000 (-0600) Subject: limit use of stackless iterator to test suite X-Git-Tag: v0.9.1~73 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=3b6138eaaad8b0615e3aed726613609b5ccb42e7;p=scryer-prolog.git limit use of stackless iterator to test suite --- diff --git a/src/heap_iter.rs b/src/heap_iter.rs index fdbc6254..21a65dbd 100644 --- a/src/heap_iter.rs +++ b/src/heap_iter.rs @@ -1,3 +1,4 @@ +#[cfg(test)] pub(crate) use crate::machine::gc::{IteratorUMP, StacklessPreOrderHeapIter}; use crate::machine::heap::*; @@ -223,6 +224,7 @@ impl<'a> Iterator for StackfulPreOrderHeapIter<'a> { } } +#[cfg(test)] #[inline(always)] pub(crate) fn stackless_preorder_iter( heap: &mut Vec, @@ -335,9 +337,11 @@ pub(crate) fn stackful_post_order_iter<'a>( PostOrderIterator::new(StackfulPreOrderHeapIter::new(heap, cell)) } +#[cfg(test)] pub(crate) type RightistPostOrderHeapIter<'a> = PostOrderIterator>; +#[cfg(test)] #[inline] pub(crate) fn stackless_post_order_iter<'a>( heap: &'a mut Heap, @@ -440,7 +444,7 @@ mod tests { ] )); - for _ in 0..200 { // 000 { + for _ in 0..200000 { let mut iter = stackless_preorder_iter(&mut wam.machine_st.heap, heap_loc_as_cell!(0)); assert_eq!( diff --git a/src/machine/arithmetic_ops.rs b/src/machine/arithmetic_ops.rs index d66fc8e0..01dd9d55 100644 --- a/src/machine/arithmetic_ops.rs +++ b/src/machine/arithmetic_ops.rs @@ -1098,7 +1098,7 @@ impl MachineState { pub(crate) fn arith_eval_by_metacall(&mut self, value: HeapCellValue) -> Result { let stub_gen = || functor_stub(atom!("is"), 2); - let mut iter = stackless_post_order_iter(&mut self.heap, value); + let mut iter = stackful_post_order_iter(&mut self.heap, value); while let Some(value) = iter.next() { if value.get_forwarding_bit() { @@ -1125,8 +1125,8 @@ impl MachineState { read_heap_cell!(value, (HeapCellValueTag::Atom, (name, arity)) => { if arity == 2 { - let a1 = self.interms.pop().unwrap(); let a2 = self.interms.pop().unwrap(); + let a1 = self.interms.pop().unwrap(); match name { atom!("+") => self.interms.push(drop_iter_on_err!( diff --git a/src/machine/gc.rs b/src/machine/gc.rs index a56580ad..05bd70d6 100644 --- a/src/machine/gc.rs +++ b/src/machine/gc.rs @@ -104,6 +104,7 @@ impl<'a> StacklessPreOrderHeapIter<'a, MarkerUMP> { } impl<'a> StacklessPreOrderHeapIter<'a, IteratorUMP> { + #[cfg(test)] pub(crate) fn new(heap: &'a mut Vec, cell: HeapCellValue) -> Self { let orig_heap_len = heap.len(); let start = orig_heap_len + 1;