Answer: They're on the heap in a "Stable Pointer Table". (ADR)
\begin{code}
#ifndef CONCURRENT
-# define SM_MAXROOTS 8 /* 8 Vanilla Regs */
+# define SM_MAXROOTS 9 /* 8 Vanilla Regs + stable pointer table*/
#else
# ifndef PAR
# ifdef GRAN
# define SM_MAXROOTS (10 + (MAX_PROC*2) + 2 )
/* unthreaded + hd/tl thread queues + Current/Main TSOs */
# else
-# define SM_MAXROOTS 5 /* See c-as-asm/HpOverflow.lc */
+# define SM_MAXROOTS 6 /* See c-as-asm/HpOverflow.lc */
# endif
# else
# define SM_MAXROOTS 6 /* See c-as-asm/HpOverflow.lc */
IF_RTS(void init_gr_profiling PROTO((int, char **, int, char **));)
#endif
-I_ collectHeap PROTO((W_ reqsize, smInfo *sm, rtsBool do_full_collection));
+I_ collectHeap PROTO((W_ reqsize, smInfo *sm, rtsBool do_full_collection));
IF_RTS(void unmapMiddleStackPage PROTO((char *, int));) /* char * == caddr_t ? */
#ifdef PAR
void EvacuateLocalGAs PROTO((rtsBool full));
-void RebuildGAtables PROTO((rtsBool full));
+void RebuildGAtables PROTO((rtsBool full));
#endif
-
\end{code}
@initSM@ finalizes any runtime parameters of the storage manager.