[project @ 2005-04-27 14:37:26 by simonmar]
[ghc-hetmet.git] / ghc / rts / Storage.c
index b2878c2..84232e7 100644 (file)
@@ -22,7 +22,6 @@
 #include "Storage.h"
 #include "Schedule.h"
 #include "RetainerProfile.h"   // for counting memory blocks (memInventory)
-#include "StoragePriv.h"
 
 #include <stdlib.h>
 #include <string.h>
@@ -217,11 +216,6 @@ initStorage( void )
       errorBelch("-G1 is incompatible with SMP");
       stg_exit(1);
   }
-  // No -H, for now
-  if (RtsFlags.GcFlags.heapSizeSuggestion > 0) {
-      errorBelch("-H<size> is incompatible with SMP");
-      stg_exit(1);
-  }
 #endif
 
   /* generation 0 is special: that's the nursery */
@@ -510,7 +504,7 @@ resizeNursery ( step *stp, nat blocks )
 // Resize each of the nurseries to the specified size.
 //
 void
-resizeNurseries (nat blocks)
+resizeNurseriesFixed (nat blocks)
 {
     nat i;
     for (i = 0; i < n_nurseries; i++) {
@@ -518,6 +512,17 @@ resizeNurseries (nat blocks)
     }
 }
 
+// 
+// Resize the nurseries to the total specified size.
+//
+void
+resizeNurseries (nat blocks)
+{
+    // If there are multiple nurseries, then we just divide the number
+    // of available blocks between them.
+    resizeNurseriesFixed(blocks / n_nurseries);
+}
+
 /* -----------------------------------------------------------------------------
    The allocate() interface
 
@@ -961,10 +966,10 @@ checkSanity( void )
        }
 
        for (s = 0; s < n_nurseries; s++) {
-           ASSERT(countBlocks(generations[g].steps[s].blocks)
-                  == generations[g].steps[s].n_blocks);
-           ASSERT(countBlocks(generations[g].steps[s].large_objects)
-                  == generations[g].steps[s].n_large_blocks);
+           ASSERT(countBlocks(nurseries[s].blocks)
+                  == nurseries[s].n_blocks);
+           ASSERT(countBlocks(nurseries[s].large_objects)
+                  == nurseries[s].n_large_blocks);
        }
            
        checkFreeListSanity();