[project @ 1999-03-02 19:50:12 by sof]
[ghc-hetmet.git] / ghc / rts / StoragePriv.h
index 8231865..4326550 100644 (file)
@@ -1,5 +1,7 @@
 /* -----------------------------------------------------------------------------
- * $Id: StoragePriv.h,v 1.3 1999/01/13 17:25:48 simonm Exp $
+ * $Id: StoragePriv.h,v 1.8 1999/02/05 16:03:02 simonm Exp $
+ *
+ * (c) The GHC Team, 1998-1999
  *
  * Internal Storage Manger Interface
  *
@@ -63,12 +65,6 @@ typedef struct _step {
   StgPtr  scan;                        /* scan pointer in current block */
   bdescr *new_large_objects;    /* large objects collected so far */
   bdescr *scavenged_large_objects; /* live large objects after GC (dbl link) */
-
-#ifdef DEBUG
-  /* for sanity checking: */
-  bdescr *old_scan_bd;
-  StgPtr  old_scan;
-#endif
 } step;
 
 typedef struct _generation {
@@ -77,6 +73,10 @@ typedef struct _generation {
   nat n_steps;                 /* number of steps */
   nat max_blocks;              /* max blocks in step 0 */
   StgMutClosure *mut_list;      /* mutable objects in this generation (not G0)*/
+  StgMutClosure *mut_once_list; /* objects that point to younger generations */
+
+  /* temporary use during GC: */
+  StgMutClosure *saved_mut_list;
 
   /* stats information */
   nat collections;
@@ -109,6 +109,12 @@ extern nat nursery_blocks;
 extern nat alloc_blocks;
 extern nat alloc_blocks_lim;
 
+extern bdescr *allocNursery ( bdescr *last_bd, nat blocks );
+extern void resizeNursery ( nat blocks );
+
+extern lnat calcLive( void );
+extern lnat calcNeeded( void );
+
 static inline void
 dbl_link_onto(bdescr *bd, bdescr **list)
 {
@@ -128,6 +134,7 @@ dbl_link_onto(bdescr *bd, bdescr **list)
 
 #ifdef DEBUG
 extern void memInventory(void);
+extern void checkSanity(nat N);
 #endif
 
 #endif /* STORAGEPRIV_H */