- 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:
- {
- /* We can't use printStdObject because we want to print the
- * tag as well.
- */
- StgWord i, j;
- const StgInfoTable* info = get_itbl(obj);
- fprintf(stderr,"PACK(");
- printPtr((StgPtr)obj->header.info);
- fprintf(stderr,"(tag=%d)",info->srt_len);
- for (i = 0; i < info->layout.payload.ptrs; ++i) {
- fprintf(stderr,", ");
- printPtr((StgPtr)obj->payload[i]);
- }
- for (j = 0; j < info->layout.payload.nptrs; ++j) {
- fprintf(stderr,", %p#", obj->payload[i+j]);
- }
- fprintf(stderr,")\n");
- break;
- }
-
-#ifdef XMLAMBDA
-/* rows are mutarrays in xmlambda, maybe we should make a new type: ROW */
- case MUT_ARR_PTRS_FROZEN:
- {
- 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 FUN:
- case FUN_1_0: case FUN_0_1:
- case FUN_1_1: case FUN_0_2: case FUN_2_0:
- case FUN_STATIC:
- printStdObject(obj,"FUN");
- 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? */
- printStdObject(obj,"THUNK");
- break;
-
- case THUNK_SELECTOR:
- printStdObject(obj,"THUNK_SELECTOR");
- break;
-
- case ARR_WORDS:
- {
- StgWord i;
- fprintf(stderr,"ARR_WORDS(\"");
- /* ToDo: we can't safely assume that this is a string!
- for (i = 0; arrWordsGetChar(obj,i); ++i) {
- putchar(arrWordsGetChar(obj,i));
- } */
- for (i=0; i<((StgArrWords *)obj)->words; i++)
- fprintf(stderr, "%d", ((StgArrWords *)obj)->payload[i]);
- fprintf(stderr,"\")\n");
- break;
- }
-
- case UPDATE_FRAME:
- {
- StgUpdateFrame* u = stgCast(StgUpdateFrame*,obj);
- fprintf(stderr,"UpdateFrame(");
- printPtr((StgPtr)GET_INFO(u));
- fprintf(stderr,",");
- printPtr((StgPtr)u->updatee);
- fprintf(stderr,",");
- printPtr((StgPtr)u->link);
- fprintf(stderr,")\n");
- break;
- }
-
- case CATCH_FRAME:
- {
- StgCatchFrame* u = stgCast(StgCatchFrame*,obj);
- fprintf(stderr,"CatchFrame(");
- printPtr((StgPtr)GET_INFO(u));
- fprintf(stderr,",");
- printPtr((StgPtr)u->handler);
- fprintf(stderr,",");
- printPtr((StgPtr)u->link);
- fprintf(stderr,")\n");
- break;
- }