limit use of stackless iterator to test suite
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
#[cfg(test)]
|
||||||
pub(crate) use crate::machine::gc::{IteratorUMP, StacklessPreOrderHeapIter};
|
pub(crate) use crate::machine::gc::{IteratorUMP, StacklessPreOrderHeapIter};
|
||||||
use crate::machine::heap::*;
|
use crate::machine::heap::*;
|
||||||
|
|
||||||
@@ -223,6 +224,7 @@ impl<'a> Iterator for StackfulPreOrderHeapIter<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub(crate) fn stackless_preorder_iter(
|
pub(crate) fn stackless_preorder_iter(
|
||||||
heap: &mut Vec<HeapCellValue>,
|
heap: &mut Vec<HeapCellValue>,
|
||||||
@@ -335,9 +337,11 @@ pub(crate) fn stackful_post_order_iter<'a>(
|
|||||||
PostOrderIterator::new(StackfulPreOrderHeapIter::new(heap, cell))
|
PostOrderIterator::new(StackfulPreOrderHeapIter::new(heap, cell))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
pub(crate) type RightistPostOrderHeapIter<'a> =
|
pub(crate) type RightistPostOrderHeapIter<'a> =
|
||||||
PostOrderIterator<StacklessPreOrderHeapIter<'a, IteratorUMP>>;
|
PostOrderIterator<StacklessPreOrderHeapIter<'a, IteratorUMP>>;
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
#[inline]
|
#[inline]
|
||||||
pub(crate) fn stackless_post_order_iter<'a>(
|
pub(crate) fn stackless_post_order_iter<'a>(
|
||||||
heap: &'a mut Heap,
|
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));
|
let mut iter = stackless_preorder_iter(&mut wam.machine_st.heap, heap_loc_as_cell!(0));
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
|||||||
@@ -1098,7 +1098,7 @@ impl MachineState {
|
|||||||
|
|
||||||
pub(crate) fn arith_eval_by_metacall(&mut self, value: HeapCellValue) -> Result<Number, MachineStub> {
|
pub(crate) fn arith_eval_by_metacall(&mut self, value: HeapCellValue) -> Result<Number, MachineStub> {
|
||||||
let stub_gen = || functor_stub(atom!("is"), 2);
|
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() {
|
while let Some(value) = iter.next() {
|
||||||
if value.get_forwarding_bit() {
|
if value.get_forwarding_bit() {
|
||||||
@@ -1125,8 +1125,8 @@ impl MachineState {
|
|||||||
read_heap_cell!(value,
|
read_heap_cell!(value,
|
||||||
(HeapCellValueTag::Atom, (name, arity)) => {
|
(HeapCellValueTag::Atom, (name, arity)) => {
|
||||||
if arity == 2 {
|
if arity == 2 {
|
||||||
let a1 = self.interms.pop().unwrap();
|
|
||||||
let a2 = self.interms.pop().unwrap();
|
let a2 = self.interms.pop().unwrap();
|
||||||
|
let a1 = self.interms.pop().unwrap();
|
||||||
|
|
||||||
match name {
|
match name {
|
||||||
atom!("+") => self.interms.push(drop_iter_on_err!(
|
atom!("+") => self.interms.push(drop_iter_on_err!(
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ impl<'a> StacklessPreOrderHeapIter<'a, MarkerUMP> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> StacklessPreOrderHeapIter<'a, IteratorUMP> {
|
impl<'a> StacklessPreOrderHeapIter<'a, IteratorUMP> {
|
||||||
|
#[cfg(test)]
|
||||||
pub(crate) fn new(heap: &'a mut Vec<HeapCellValue>, cell: HeapCellValue) -> Self {
|
pub(crate) fn new(heap: &'a mut Vec<HeapCellValue>, cell: HeapCellValue) -> Self {
|
||||||
let orig_heap_len = heap.len();
|
let orig_heap_len = heap.len();
|
||||||
let start = orig_heap_len + 1;
|
let start = orig_heap_len + 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user