+
+ 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);
+ break;
+
+ case TSO:
+ fprintf(stderr,"TSO(");
+ fprintf(stderr,"%d (%p)",((StgTSO*)obj)->id, (StgTSO*)obj);
+ fprintf(stderr,")\n");
+ break;
+
+#if defined(PAR)
+ case BLOCKED_FETCH:
+ fprintf(stderr,"BLOCKED_FETCH(");
+ printGA(&(stgCast(StgBlockedFetch*,obj)->ga));
+ printPtr((StgPtr)(stgCast(StgBlockedFetch*,obj)->node));
+ fprintf(stderr,")\n");
+ break;
+
+ case FETCH_ME:
+ fprintf(stderr,"FETCH_ME(");
+ printGA((globalAddr *)stgCast(StgFetchMe*,obj)->ga);
+ fprintf(stderr,")\n");
+ break;
+
+ case FETCH_ME_BQ:
+ fprintf(stderr,"FETCH_ME_BQ(");
+ // printGA((globalAddr *)stgCast(StgFetchMe*,obj)->ga);
+ printPtr((StgPtr)stgCast(StgFetchMeBlockingQueue*,obj)->blocking_queue);
+ fprintf(stderr,")\n");
+ break;
+#endif
+
+#if defined(GRAN) || defined(PAR)
+ case RBH:
+ fprintf(stderr,"RBH(");
+ printPtr((StgPtr)stgCast(StgRBH*,obj)->blocking_queue);
+ fprintf(stderr,")\n");
+ break;
+
+#endif
+
+#if 0
+ /* Symptomatic of a problem elsewhere, have it fall-through & fail */
+ case EVACUATED:
+ fprintf(stderr,"EVACUATED(");
+ printClosure((StgEvacuated*)obj->evacuee);
+ fprintf(stderr,")\n");
+ break;
+#endif
+
+#if defined(PAR) && defined(DIST)
+ case REMOTE_REF:
+ fprintf(stderr,"REMOTE_REF(");
+ printGA((globalAddr *)stgCast(StgFetchMe*,obj)->ga);
+ fprintf(stderr,")\n");
+ break;
+#endif
+