From: sof Date: Tue, 21 Jan 1997 09:02:17 +0000 (+0000) Subject: [project @ 1997-01-21 09:02:17 by sof] X-Git-Tag: Approximately_1000_patches_recorded~842 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=ffec12c8bd14450a08bd84a4a4860099b36f2298;p=ghc-hetmet.git [project @ 1997-01-21 09:02:17 by sof] Stable pointers were not treated as roots --- diff --git a/ghc/runtime/c-as-asm/HpOverflow.lc b/ghc/runtime/c-as-asm/HpOverflow.lc index 8e013f9..16b80bb 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 */ \