Local Definitions.
\begin{code}
-static globalAddr PendingGABuffer[(PACK_BUFFER_SIZE-PACK_HDR_SIZE)*2];
+static globalAddr *PendingGABuffer; /* HWL; init in main; */
+
+void
+InitPendingGABuffer(size)
+W_ size;
+{
+ PendingGABuffer
+ = (globalAddr *) stgMallocBytes((size-PACK_HDR_SIZE)*2*sizeof(globalAddr), "InitPendingGABuffer");
+}
\end{code}
@CommonUp@ commons up two closures which we have discovered to be
\begin{code}
void
-CommonUp(src, dst)
-P_ src;
-P_ dst;
+CommonUp(P_ src, P_ dst)
{
P_ bqe;
W_ pptr = 0, pptrs = 0, pvhs;
int i;
+ globalAddr *gaga;
+
+ InitPackBuffer(); /* in case it isn't already init'd */
- globalAddr *gaga = PendingGABuffer;
+ gaga = PendingGABuffer;
InitClosureQueue();
graph[FIXED_HS + i + vhs + ptrs] = *bufptr++;
/* Indirections are never packed */
- ASSERT(INFO_PTR(graph) != (W_) Ind_info);
+ ASSERT(INFO_PTR(graph) != (W_) Ind_info_TO_USE);
/* Add to queue for processing */
QueueClosure(graph);