From ffec12c8bd14450a08bd84a4a4860099b36f2298 Mon Sep 17 00:00:00 2001
From: sof <unknown>
Date: Tue, 21 Jan 1997 09:02:17 +0000
Subject: [PATCH] [project @ 1997-01-21 09:02:17 by sof] Stable pointers were
 not treated as roots

---
 ghc/runtime/c-as-asm/HpOverflow.lc | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/ghc/runtime/c-as-asm/HpOverflow.lc b/ghc/runtime/c-as-asm/HpOverflow.lc
index 8e013f9d770e..16b80bb82de3 100644
--- a/ghc/runtime/c-as-asm/HpOverflow.lc
+++ b/ghc/runtime/c-as-asm/HpOverflow.lc
@@ -159,6 +159,11 @@ RealPerformGC(liveness, reqsize, always_reenter_node, do_full_collection)
                 displacement); */
     }
 
+    /* Add the stable pointer table to the roots list */
+#ifndef PAR
+   StorageMgrInfo.roots[num_ptr_roots++] = StorageMgrInfo.StablePointerTable;
+#endif
+
     ASSERT(num_ptr_roots <= SM_MAXROOTS);
     StorageMgrInfo.rootno = num_ptr_roots;
 
@@ -213,6 +218,11 @@ RealPerformGC(liveness, reqsize, always_reenter_node, do_full_collection)
     /* root restoring ------------------------------- */
     /* must do all the restoring exactly backwards to the storing! */
 
+    /* remove the stable pointer table first */
+#ifndef PAR
+    StorageMgrInfo.StablePointerTable = StorageMgrInfo.roots[--num_ptr_roots];
+#endif
+
     /* now the general regs, in *backwards* order */
 
 # define __DEROOT_PTR_REG(cond,n) /* n == 1 <=> R1 */	\
-- 
GitLab