+
+ case CONSTR:
+ case CONSTR_1_0: case CONSTR_0_1:
+ case CONSTR_1_1: case CONSTR_0_2: case CONSTR_2_0:
+ case CONSTR_INTLIKE:
+ case CONSTR_CHARLIKE:
+ case CONSTR_STATIC:
+ case CONSTR_NOCAF_STATIC:
+ {
+ StgWord i, j;
+#ifdef PROFILING
+ debugBelch("%s(", info->prof.closure_desc);
+ debugBelch("%s", obj->header.prof.ccs->cc->label);
+#else
+ debugBelch("CONSTR(");
+ printPtr((StgPtr)obj->header.info);
+ debugBelch("(tag=%d)",info->srt_bitmap);
+#endif
+ for (i = 0; i < info->layout.payload.ptrs; ++i) {
+ debugBelch(", ");
+ printPtr((StgPtr)obj->payload[i]);
+ }
+ for (j = 0; j < info->layout.payload.nptrs; ++j) {
+ debugBelch(", %p#", obj->payload[i+j]);
+ }
+ debugBelch(")\n");
+ break;
+ }
+
+ case FUN:
+ case FUN_1_0: case FUN_0_1:
+ case FUN_1_1: case FUN_0_2: case FUN_2_0:
+ case FUN_STATIC:
+ debugBelch("FUN/%d(",itbl_to_fun_itbl(info)->f.arity);
+ printPtr((StgPtr)obj->header.info);
+#ifdef PROFILING
+ debugBelch(", %s", obj->header.prof.ccs->cc->label);
+#endif
+ 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:
+ case THUNK_STATIC:
+ /* ToDo: will this work for THUNK_STATIC too? */
+#ifdef PROFILING
+ printThunkObject((StgThunk *)obj,info->prof.closure_desc);
+#else
+ printThunkObject((StgThunk *)obj,"THUNK");
+#endif
+ break;
+
+ case THUNK_SELECTOR:
+ printStdObjHdr(obj, "THUNK_SELECTOR");
+ debugBelch(", %p)\n", ((StgSelector *)obj)->selectee);
+ break;
+