]> Repositorios git - scryer-prolog.git/commitdiff
small tweak for read_from_term performance (#2668)
authorMark Thom <[email protected]>
Wed, 13 Aug 2025 05:29:31 +0000 (22:29 -0700)
committerMark Thom <[email protected]>
Wed, 13 Aug 2025 05:29:31 +0000 (22:29 -0700)
src/machine/loader.rs

index 2b49b50c69daebaf201783fb1b3794fbd74fba95..4906ce533aa93efbb1f7423feb08fd67234a8d3a 100644 (file)
@@ -1384,10 +1384,16 @@ impl MachineState {
             stackful_post_order_iter::<NonListElider>(&mut self.heap, &mut self.stack, 0);
 
         while let Some(addr) = iter.next() {
-            let addr = unmark_cell_bits!(heap_bound_store(
-                iter.base_iter.heap,
-                heap_bound_deref(iter.base_iter.heap, addr),
-            ));
+            let addr = unmark_cell_bits!(addr);
+
+            let addr = if addr.is_var() {
+                unmark_cell_bits!(heap_bound_store(
+                    iter.base_iter.heap,
+                    heap_bound_deref(iter.base_iter.heap, addr)
+                ))
+            } else {
+                addr
+            };
 
             read_heap_cell!(addr,
                 (HeapCellValueTag::Lis) => {