case CONSTR:
case FUN:
case IND_PERM:
- case IND_OLDGEN:
- case IND_OLDGEN_PERM:
- case CAF_BLACKHOLE:
case BLACKHOLE:
+ case BLOCKING_QUEUE:
case FUN_1_0:
case FUN_0_1:
case FUN_1_1:
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;
prim = rtsTrue;
#ifdef PROFILING
if (RtsFlags.ProfFlags.includeTSOs) {
- size = tso_sizeW((StgTSO *)p);
+ size = sizeofW(StgTSO);
break;
} else {
// Skip this TSO and move on to the next object
- p += tso_sizeW((StgTSO *)p);
+ p += sizeofW(StgTSO);
continue;
}
#else
- size = tso_sizeW((StgTSO *)p);
+ size = sizeofW(StgTSO);
break;
#endif
- case TREC_HEADER:
+ case STACK:
prim = rtsTrue;
- size = sizeofW(StgTRecHeader);
+#ifdef PROFILING
+ if (RtsFlags.ProfFlags.includeTSOs) {
+ size = stack_sizeW((StgStack*)p);
+ break;
+ } else {
+ // Skip this TSO and move on to the next object
+ p += stack_sizeW((StgStack*)p);
+ continue;
+ }
+#else
+ size = stack_sizeW((StgStack*)p);
break;
+#endif
- 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:
+ case TREC_CHUNK:
prim = rtsTrue;
size = sizeofW(StgTRecChunk);
break;
void
heapCensus( void )
{
- nat g, s;
+ nat g;
Census *census;
census = &censuses[era];
#endif
// Traverse the heap, collecting the census info
- if (RtsFlags.GcFlags.generations == 1) {
- heapCensusChain( census, g0s0->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