Add +RTS -n<size>: divide the nursery into chunks
[ghc.git] / rts / sm / GC.c
index 748dc0d..9777f32 100644 (file)
@@ -408,10 +408,6 @@ GarbageCollect (nat collect_gen,
       break;
   }
 
-  if (!DEBUG_IS_ON && n_gc_threads != 1) {
-      clearNursery(cap);
-  }
-
   shutdown_gc_threads(gct->thread_index);
 
   // Now see which stable names are still alive.
@@ -646,21 +642,6 @@ GarbageCollect (nat collect_gen,
       }
   }
 
-  // Reset the nursery: make the blocks empty
-  if (DEBUG_IS_ON || n_gc_threads == 1) {
-      for (n = 0; n < n_capabilities; n++) {
-          clearNursery(capabilities[n]);
-      }
-  } else {
-      // When doing parallel GC, clearNursery() is called by the
-      // worker threads
-      for (n = 0; n < n_capabilities; n++) {
-          if (gc_threads[n]->idle) {
-              clearNursery(capabilities[n]);
-          }
-      }
-  }
-
   resize_nursery();
 
   resetNurseries();
@@ -1072,10 +1053,6 @@ gcWorkerThread (Capability *cap)
 
     scavenge_until_all_done();
 
-    if (!DEBUG_IS_ON) {
-        clearNursery(cap);
-    }
-
 #ifdef THREADED_RTS
     // Now that the whole heap is marked, we discard any sparks that
     // were found to be unreachable.  The main GC thread is currently
@@ -1716,9 +1693,9 @@ resize_nursery (void)
         }
         else
         {
-            // we might have added extra large blocks to the nursery, so
-            // resize back to minAllocAreaSize again.
-            resizeNurseriesFixed(RtsFlags.GcFlags.minAllocAreaSize);
+            // we might have added extra blocks to the nursery, so
+            // resize back to the original size again.
+            resizeNurseriesFixed();
         }
     }
 }