+ case MUT_ARR_PTRS:
+ fprintf(stderr,"MUT_ARR_PTRS(size=%d)\n", ((StgMutArrPtrs *)obj)->ptrs);
+ break;
+
+ case MUT_ARR_PTRS_FROZEN:
+#if !defined(XMLAMBDA)
+ fprintf(stderr,"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);
+
+ fprintf(stderr,"Row<%i>(",p->ptrs);
+ for (i = 0; i < p->ptrs; ++i) {
+ if (i > 0) fprintf(stderr,", ");
+ printPtr((StgPtr)(p->payload[i]));
+ }
+ fprintf(stderr,")\n");
+ break;
+ }
+#endif
+
+ case MUT_VAR:
+ {
+ StgMutVar* mv = (StgMutVar*)obj;
+ fprintf(stderr,"MUT_VAR(var=%p, link=%p)\n", mv->var, mv->mut_link);
+ break;
+ }
+
+ case WEAK:
+ fprintf(stderr,"WEAK(");
+ fprintf(stderr," key=%p value=%p finalizer=%p",
+ (StgPtr)(((StgWeak*)obj)->key),
+ (StgPtr)(((StgWeak*)obj)->value),
+ (StgPtr)(((StgWeak*)obj)->finalizer));
+ fprintf(stderr,")\n");
+ /* ToDo: chase 'link' ? */
+ break;
+
+ case FOREIGN:
+ fprintf(stderr,"FOREIGN(");
+ printPtr((StgPtr)( ((StgForeignObj*)obj)->data ));
+ fprintf(stderr,")\n");
+ break;
+
+ case STABLE_NAME:
+ fprintf(stderr,"STABLE_NAME(%d)\n", ((StgStableName*)obj)->sn);