#endif
#ifndef PAR
- P_ MallocPtrList; /* List of all Malloc Pointers (in new generation) */
+ P_ ForeignObjList; /* List of all Foreign objects (in new generation) */
#if defined(GCap) || defined(GCgn)
- P_ OldMallocPtrList; /* List of all Malloc Pointers in old generation */
+ P_ OldForeignObjList; /* List of all Foreign objects in old generation */
#endif
P_ StablePointerTable;
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*4) + 2 + (MAX_PROC*2) + MAX_SPARKS)
- /* unthreaded + spark/thread queues + Current/Main TSOs
- + events + sparks */
+# 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.
@OldLim@ field.
In the sequential system, it also initialises the stable pointer table
-and the @MallocPtr@ (and @OldMallocPtrList@) fields.
+and the @ForeignObjList@ (and @OldForeignObjList@) fields.
@collectHeap@ invokes the garbage collector that was requested at
compile time. @reqsize@ is the size of the request (in words) that
\item The elements of @CAFlist@ and the stable pointers will be
updated to point to the new locations of the closures they reference.
-\item Any members of @MallocPtrList@ which became garbage should have
-been reported (by calling @FreeMallocPtr@; and the @(Old)MallocPtrList@
-updated to contain only those Malloc Pointers which are still live.
+\item Any members of @ForeignObjList@ which became garbage should have
+been reported (by calling their finalising routines; and the @(Old)ForeignObjList@
+updated to contain only those Foreign objects which are still live.
\end{itemize}
\end{description}
We store the following information concerning the stacks in a global
structure. (sequential only).
\begin{code}
+#if 1 /* ndef CONCURRENT * /? HWL */
typedef struct {
PP_ botA; /* Points to bottom-most word of A stack */
} stackData;
extern stackData stackInfo;
+
+#endif /* !CONCURRENT */
\end{code}
%************************************************************************
in the info-table.
\begin{code}
-#if defined(GC2s)
-#define _INFO_COPYING
-#else
-#if defined(GC1s)
+#if defined(GCdu) || defined (GCap) || defined (GCgn)
+#define _INFO_COPYING
#define _INFO_COMPACTING
#define _INFO_MARKING
-
#else
-#if defined(GCdu) || defined (GCap) || defined (GCgn)
+#if defined(GC2s)
#define _INFO_COPYING
+
+#else
+#if defined(GC1s)
#define _INFO_COMPACTING
#define _INFO_MARKING
-
#else
-/* NO_INFO_SPECIFIED (ToDo: an #error ???) */
+/* NO_INFO_SPECIFIED (ToDo: an #error ?) */
#endif
#endif
#endif