Use message-passing to implement throwTo in the RTS
[ghc-hetmet.git] / rts / ProfHeap.c
index b9fc7b3..e90051c 100644 (file)
@@ -912,7 +912,8 @@ heapCensusChain( Census *census, bdescr *bd )
             case MVAR_CLEAN:
             case MVAR_DIRTY:
            case WEAK:
-           case STABLE_NAME:
+           case PRIM:
+           case MUT_PRIM:
            case MUT_VAR_CLEAN:
            case MUT_VAR_DIRTY:
                prim = rtsTrue;
@@ -960,31 +961,6 @@ heapCensusChain( Census *census, bdescr *bd )
                break;
 #endif
 
-           case TREC_HEADER: 
-               prim = rtsTrue;
-               size = sizeofW(StgTRecHeader);
-               break;
-
-           case TVAR_WATCH_QUEUE:
-               prim = rtsTrue;
-               size = sizeofW(StgTVarWatchQueue);
-               break;
-               
-           case INVARIANT_CHECK_QUEUE:
-               prim = rtsTrue;
-               size = sizeofW(StgInvariantCheckQueue);
-               break;
-               
-           case ATOMIC_INVARIANT:
-               prim = rtsTrue;
-               size = sizeofW(StgAtomicInvariant);
-               break;
-               
-           case TVAR:
-               prim = rtsTrue;
-               size = sizeofW(StgTVar);
-               break;
-               
            case TREC_CHUNK:
                prim = rtsTrue;
                size = sizeofW(StgTRecChunk);
@@ -1067,7 +1043,7 @@ heapCensusChain( Census *census, bdescr *bd )
 void
 heapCensus( void )
 {
-  nat g, s;
+  nat g;
   Census *census;
 
   census = &censuses[era];
@@ -1085,17 +1061,11 @@ heapCensus( void )
 #endif
 
   // Traverse the heap, collecting the census info
-  if (RtsFlags.GcFlags.generations == 1) {
-      heapCensusChain( census, g0->steps[0].blocks );
-  } else {
-      for (g = 0; g < RtsFlags.GcFlags.generations; g++) {
-         for (s = 0; s < generations[g].n_steps; s++) {
-             heapCensusChain( census, generations[g].steps[s].blocks );
-             // Are we interested in large objects?  might be
-             // confusing to include the stack in a heap profile.
-             heapCensusChain( census, generations[g].steps[s].large_objects );
-         }
-      }
+  for (g = 0; g < RtsFlags.GcFlags.generations; g++) {
+      heapCensusChain( census, generations[g].blocks );
+      // Are we interested in large objects?  might be
+      // confusing to include the stack in a heap profile.
+      heapCensusChain( census, generations[g].large_objects );
   }
 
   // dump out the census info