small improvements to the debug printer
[ghc-hetmet.git] / ghc / rts / Printer.c
index ca9b008..8290d22 100644 (file)
@@ -332,8 +332,12 @@ printClosure( StgClosure *obj )
             break;
         }
 
-    case MUT_ARR_PTRS:
-       debugBelch("MUT_ARR_PTRS(size=%lu)\n", (lnat)((StgMutArrPtrs *)obj)->ptrs);
+    case MUT_ARR_PTRS_CLEAN:
+       debugBelch("MUT_ARR_PTRS_CLEAN(size=%lu)\n", (lnat)((StgMutArrPtrs *)obj)->ptrs);
+       break;
+
+    case MUT_ARR_PTRS_DIRTY:
+       debugBelch("MUT_ARR_PTRS_DIRTY(size=%lu)\n", (lnat)((StgMutArrPtrs *)obj)->ptrs);
        break;
 
     case MUT_ARR_PTRS_FROZEN:
@@ -347,10 +351,17 @@ printClosure( StgClosure *obj )
           break;
         }
 
-    case MUT_VAR:
+    case MUT_VAR_CLEAN:
         {
          StgMutVar* mv = (StgMutVar*)obj;
-         debugBelch("MUT_VAR(var=%p)\n", mv->var);
+         debugBelch("MUT_VAR_CLEAN(var=%p)\n", mv->var);
+          break;
+        }
+
+    case MUT_VAR_DIRTY:
+        {
+         StgMutVar* mv = (StgMutVar*)obj;
+         debugBelch("MUT_VAR_DIRTY(var=%p)\n", mv->var);
           break;
         }
 
@@ -529,10 +540,13 @@ printStackChunk( StgPtr sp, StgPtr spBottom )
            
        case UPDATE_FRAME:
        case CATCH_FRAME:
-       case STOP_FRAME:
            printObj((StgClosure*)sp);
            continue;
 
+       case STOP_FRAME:
+           printObj((StgClosure*)sp);
+           return;
+
        case RET_DYN:
        { 
            StgRetDyn* r;
@@ -566,7 +580,7 @@ printStackChunk( StgPtr sp, StgPtr spBottom )
 
        case RET_SMALL:
        case RET_VEC_SMALL:
-           debugBelch("RET_SMALL (%p)\n", sp);
+           debugBelch("RET_SMALL (%p)\n", info);
            bitmap = info->layout.bitmap;
            printSmallBitmap(spBottom, sp+1, 
                             BITMAP_BITS(bitmap), BITMAP_SIZE(bitmap));
@@ -596,10 +610,10 @@ printStackChunk( StgPtr sp, StgPtr spBottom )
            ret_fun = (StgRetFun *)sp;
            fun_info = get_fun_itbl(ret_fun->fun);
            size = ret_fun->size;
-           debugBelch("RET_FUN (%p) (type=%d)\n", ret_fun, fun_info->f.fun_type);
+           debugBelch("RET_FUN (%p) (type=%d)\n", ret_fun->fun, fun_info->f.fun_type);
            switch (fun_info->f.fun_type) {
            case ARG_GEN:
-               printSmallBitmap(spBottom, sp+1,
+               printSmallBitmap(spBottom, sp+2,
                                 BITMAP_BITS(fun_info->f.b.bitmap),
                                 BITMAP_SIZE(fun_info->f.b.bitmap));
                break;
@@ -609,7 +623,7 @@ printStackChunk( StgPtr sp, StgPtr spBottom )
                                 GET_FUN_LARGE_BITMAP(fun_info)->size);
                break;
            default:
-               printSmallBitmap(spBottom, sp+1,
+               printSmallBitmap(spBottom, sp+2,
                                 BITMAP_BITS(stg_arg_bitmaps[fun_info->f.fun_type]),
                                 BITMAP_SIZE(stg_arg_bitmaps[fun_info->f.fun_type]));
                break;
@@ -688,9 +702,11 @@ static char *closure_type_names[] = {
     "SE_CAF_BLACKHOLE",
     "MVAR",
     "ARR_WORDS",
-    "MUT_ARR_PTRS",
+    "MUT_ARR_PTRS_CLEAN",
+    "MUT_ARR_PTRS_DIRTY",
     "MUT_ARR_PTRS_FROZEN",
-    "MUT_VAR",
+    "MUT_VAR_CLEAN",
+    "MUT_VAR_DIRTY",
     "MUT_CONS",
     "WEAK",
     "FOREIGN",