]> Repositorios git - scryer-prolog.git/commitdiff
detect immediately cyclic lists (#1384)
authorMark Thom <[email protected]>
Thu, 7 Apr 2022 04:53:48 +0000 (22:53 -0600)
committerMark Thom <[email protected]>
Thu, 7 Apr 2022 04:53:48 +0000 (22:53 -0600)
src/heap_iter.rs

index 21a65dbdb05ffaffc2a481a2a8be017def8f235d..8c40d56abda56e393b513194705212755a0fe6a9 100644 (file)
@@ -167,7 +167,12 @@ impl<'a> StackfulPreOrderHeapIter<'a> {
                    self.push_if_unmarked(vh);
 
                    self.stack.push(IterStackLoc::iterable_heap_loc(vh + 1));
-                   forward_if_referent_marked(&mut self.heap, vh + 1);
+
+                   if self.heap[vh + 1].get_mark_bit() {
+                       self.heap[vh + 1].set_forwarding_bit(true);
+                   } else {
+                       forward_if_referent_marked(&mut self.heap, vh + 1);
+                   }
 
                    self.stack.push(IterStackLoc::mark_heap_loc(vh));
                    forward_if_referent_marked(&mut self.heap, vh);