]> Repositorios git - scryer-prolog.git/commitdiff
dereference compare_term_test args down from stack (#3286, #3295)
authorMark Thom <[email protected]>
Tue, 21 Apr 2026 23:02:55 +0000 (16:02 -0700)
committerMark Thom <[email protected]>
Tue, 21 Apr 2026 23:02:55 +0000 (16:02 -0700)
src/machine/machine_state_impl.rs

index fdaa6aeb946b815d0fac02aa24f81156b2a28d2f..80f6c61f305b6f66d620a76b0f6819e44ae53a28 100644 (file)
@@ -557,6 +557,11 @@ impl MachineState {
     }
 
     pub fn compare_term_test(&self, h1: HeapCellValue, h2: HeapCellValue) -> Option<Ordering> {
+       // all derefs downstack from this function are heap bound so
+       // dereference stack vars pointing into the heap while possible
+       let h1 = self.store(h1);
+       let h2 = self.store(h2);
+
         for term_pair in ParallelHeapIter::from(self, h1, h2) {
             match term_pair {
                 TermPair::Vars(v1_offset, v2_offset) if v1_offset != v2_offset => {