+ case MUT_ARR_PTRS:
+ debugBelch("MUT_ARR_PTRS(size=%d)\n", ((StgMutArrPtrs *)obj)->ptrs);
+ break;
+
+ case MUT_ARR_PTRS_FROZEN:
+#if !defined(XMLAMBDA)
+ debugBelch("MUT_ARR_PTRS_FROZEN(size=%d)\n", ((StgMutArrPtrs *)obj)->ptrs);
+ break;
+#else
+ {
+ /* rows are mutarrays in xmlambda, maybe we should make a new type: ROW */
+ StgWord i;
+ StgMutArrPtrs* p = stgCast(StgMutArrPtrs*,obj);
+
+ debugBelch("Row<%i>(",p->ptrs);
+ for (i = 0; i < p->ptrs; ++i) {
+ if (i > 0) debugBelch(", ");
+ printPtr((StgPtr)(p->payload[i]));
+ }
+ debugBelch(")\n");
+ break;
+ }
+#endif
+
+ case MVAR:
+ {
+ StgMVar* mv = (StgMVar*)obj;
+ debugBelch("MVAR(head=%p, link=%p, tail=%p, value=%p)\n", mv->head, mv->mut_link, mv->tail, mv->value);
+ break;
+ }
+
+ case MUT_VAR:
+ {
+ StgMutVar* mv = (StgMutVar*)obj;
+ debugBelch("MUT_VAR(var=%p, link=%p)\n", mv->var, mv->mut_link);
+ break;
+ }
+
+ case WEAK:
+ debugBelch("WEAK(");
+ debugBelch(" key=%p value=%p finalizer=%p",
+ (StgPtr)(((StgWeak*)obj)->key),
+ (StgPtr)(((StgWeak*)obj)->value),
+ (StgPtr)(((StgWeak*)obj)->finalizer));
+ debugBelch(")\n");
+ /* ToDo: chase 'link' ? */
+ break;
+
+ case FOREIGN:
+ debugBelch("FOREIGN(");
+ printPtr((StgPtr)( ((StgForeignObj*)obj)->data ));
+ debugBelch(")\n");
+ break;
+
+ case STABLE_NAME:
+ debugBelch("STABLE_NAME(%d)\n", ((StgStableName*)obj)->sn);