printStdObjPayload(obj);
break;
+ case PRIM:
+ debugBelch("PRIM(");
+ printPtr((StgPtr)obj->header.info);
+ printStdObjPayload(obj);
+ break;
+
case THUNK:
case THUNK_1_0: case THUNK_0_1:
case THUNK_1_1: case THUNK_0_2: case THUNK_2_0:
debugBelch(")\n");
break;
- case IND_OLDGEN:
- debugBelch("IND_OLDGEN(");
- printPtr((StgPtr)((StgInd*)obj)->indirectee);
- debugBelch(")\n");
- break;
-
case IND_PERM:
debugBelch("IND(");
printPtr((StgPtr)((StgInd*)obj)->indirectee);
debugBelch(")\n");
break;
- case IND_OLDGEN_PERM:
- debugBelch("IND_OLDGEN_PERM(");
+ case IND_STATIC:
+ debugBelch("IND_STATIC(");
printPtr((StgPtr)((StgInd*)obj)->indirectee);
debugBelch(")\n");
break;
- case IND_STATIC:
- debugBelch("IND_STATIC(");
+ case BLACKHOLE:
+ debugBelch("BLACKHOLE(");
printPtr((StgPtr)((StgInd*)obj)->indirectee);
debugBelch(")\n");
break;
break;
}
- case CAF_BLACKHOLE:
- debugBelch("CAF_BH");
- break;
-
- case BLACKHOLE:
- debugBelch("BH\n");
- break;
-
case ARR_WORDS:
{
StgWord i;
/* ToDo: chase 'link' ? */
break;
- case STABLE_NAME:
- debugBelch("STABLE_NAME(%lu)\n", (lnat)((StgStableName*)obj)->sn);
- break;
-
case TSO:
debugBelch("TSO(");
debugBelch("%lu (%p)",(unsigned long)(((StgTSO*)obj)->id), (StgTSO*)obj);
void
findPtr(P_ p, int follow)
{
- nat s, g;
+ nat g;
bdescr *bd;
#if defined(__GNUC__)
const int arr_size = 1024;
searched = 0;
for (g = 0; g < RtsFlags.GcFlags.generations; g++) {
- for (s = 0; s < generations[g].n_steps; s++) {
- bd = generations[g].steps[s].blocks;
- i = findPtrBlocks(p,bd,arr,arr_size,i);
- bd = generations[g].steps[s].large_objects;
- i = findPtrBlocks(p,bd,arr,arr_size,i);
- if (i >= arr_size) return;
- }
+ bd = generations[g].blocks;
+ i = findPtrBlocks(p,bd,arr,arr_size,i);
+ bd = generations[g].large_objects;
+ i = findPtrBlocks(p,bd,arr,arr_size,i);
+ if (i >= arr_size) return;
}
if (follow && i == 1) {
debugBelch("-->\n");
while (type == IND ||
type == IND_STATIC ||
- type == IND_OLDGEN ||
- type == IND_PERM ||
- type == IND_OLDGEN_PERM)
+ type == IND_PERM)
{
obj = ((StgInd *)obj)->indirectee;
type = get_itbl(obj)->type;
}
}
+char *what_next_strs[] = {
+ [0] = "(unknown)",
+ [ThreadRunGHC] = "ThreadRunGHC",
+ [ThreadInterpret] = "ThreadInterpret",
+ [ThreadKilled] = "ThreadKilled",
+ [ThreadRelocated] = "ThreadRelocated",
+ [ThreadComplete] = "ThreadComplete"
+};
+
#else /* DEBUG */
void printPtr( StgPtr p )
{
[PAP] = "PAP",
[AP_STACK] = "AP_STACK",
[IND] = "IND",
- [IND_OLDGEN] = "IND_OLDGEN",
[IND_PERM] = "IND_PERM",
- [IND_OLDGEN_PERM] = "IND_OLDGEN_PERM",
[IND_STATIC] = "IND_STATIC",
[RET_BCO] = "RET_BCO",
[RET_SMALL] = "RET_SMALL",
[UPDATE_FRAME] = "UPDATE_FRAME",
[CATCH_FRAME] = "CATCH_FRAME",
[STOP_FRAME] = "STOP_FRAME",
- [CAF_BLACKHOLE] = "CAF_BLACKHOLE",
[BLACKHOLE] = "BLACKHOLE",
+ [BLOCKING_QUEUE] = "BLOCKING_QUEUE",
[MVAR_CLEAN] = "MVAR_CLEAN",
[MVAR_DIRTY] = "MVAR_DIRTY",
[ARR_WORDS] = "ARR_WORDS",
[MUT_VAR_CLEAN] = "MUT_VAR_CLEAN",
[MUT_VAR_DIRTY] = "MUT_VAR_DIRTY",
[WEAK] = "WEAK",
- [STABLE_NAME] = "STABLE_NAME",
+ [PRIM] = "PRIM",
+ [MUT_PRIM] = "MUT_PRIM",
[TSO] = "TSO",
- [TVAR_WATCH_QUEUE] = "TVAR_WATCH_QUEUE",
- [INVARIANT_CHECK_QUEUE] = "INVARIANT_CHECK_QUEUE",
- [ATOMIC_INVARIANT] = "ATOMIC_INVARIANT",
- [TVAR] = "TVAR",
[TREC_CHUNK] = "TREC_CHUNK",
- [TREC_HEADER] = "TREC_HEADER",
[ATOMICALLY_FRAME] = "ATOMICALLY_FRAME",
[CATCH_RETRY_FRAME] = "CATCH_RETRY_FRAME",
[CATCH_STM_FRAME] = "CATCH_STM_FRAME",