X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=ghc%2Frts%2FPrinter.c;h=c173a9382498e25c92a9d7c8959f94ae415203df;hb=3ddff2383b0f43e29b8edf52a5087ceef958a1a2;hp=99c12551783bfaf995f65166a7de068fa53dd604;hpb=dd4c28a9c706cce09ecc2c6f532969efa925532f;p=ghc-hetmet.git diff --git a/ghc/rts/Printer.c b/ghc/rts/Printer.c index 99c1255..c173a93 100644 --- a/ghc/rts/Printer.c +++ b/ghc/rts/Printer.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: Printer.c,v 1.23 2000/03/31 03:09:36 hwloidl Exp $ + * $Id: Printer.c,v 1.38 2001/03/22 03:51:10 hwloidl Exp $ * * (c) The GHC Team, 1994-2000. * @@ -14,14 +14,18 @@ #include "RtsUtils.h" #include "RtsFlags.h" +#include "MBlock.h" +#include "Storage.h" #include "Bytecodes.h" /* for InstrPtr */ #include "Disassembler.h" #include "Printer.h" +#if defined(GRAN) || defined(PAR) // HWL: explicit fixed header size to make debugging easier int fixed_hs = FIXED_HS, itbl_sz = sizeofW(StgInfoTable), uf_sz=sizeofW(StgUpdateFrame), sf_sz=sizeofW(StgSeqFrame); +#endif /* -------------------------------------------------------------------------- * local function decls @@ -43,33 +47,11 @@ static void printZcoded ( const char *raw ); * Printer * ------------------------------------------------------------------------*/ - -#ifdef INTERPRETER -extern void* itblNames[]; -extern int nItblNames; -char* lookupHugsItblName ( void* v ) -{ - int i; - for (i = 0; i < nItblNames; i += 2) - if (itblNames[i] == v) return itblNames[i+1]; - return NULL; -} -#endif - void printPtr( StgPtr p ) { -#ifdef INTERPRETER - char* str; -#endif const char *raw; if (lookupGHCName( p, &raw )) { printZcoded(raw); -#ifdef INTERPRETER - } else if ((raw = lookupHugsName(p)) != 0) { - fprintf(stderr, "%s", raw); - } else if ((str = lookupHugsItblName(p)) != 0) { - fprintf(stderr, "%p=%s", p, str); -#endif } else { fprintf(stderr, "%p", p); } @@ -102,12 +84,9 @@ void printClosure( StgClosure *obj ) switch ( get_itbl(obj)->type ) { case INVALID_OBJECT: barf("Invalid object"); -#ifdef INTERPRETER case BCO: - fprintf(stderr,"BCO\n"); - disassemble(stgCast(StgBCO*,obj),"\t"); + disassemble( (StgBCO*)obj ); break; -#endif case AP_UPD: { @@ -116,7 +95,7 @@ void printClosure( StgClosure *obj ) fprintf(stderr,"AP_UPD("); printPtr((StgPtr)ap->fun); for (i = 0; i < ap->n_args; ++i) { fprintf(stderr,", "); - printPtr(ap->payload[i]); + printPtr((P_)ap->payload[i]); } fprintf(stderr,")\n"); break; @@ -153,32 +132,6 @@ void printClosure( StgClosure *obj ) fprintf(stderr,")\n"); break; - case CAF_UNENTERED: - { - StgCAF* caf = stgCast(StgCAF*,obj); - fprintf(stderr,"CAF_UNENTERED("); - printPtr((StgPtr)caf->body); - fprintf(stderr,", "); - printPtr((StgPtr)caf->value); /* should be null */ - fprintf(stderr,", "); - printPtr((StgPtr)caf->link); /* should be null */ - fprintf(stderr,")\n"); - break; - } - - case CAF_ENTERED: - { - StgCAF* caf = stgCast(StgCAF*,obj); - fprintf(stderr,"CAF_ENTERED("); - printPtr((StgPtr)caf->body); - fprintf(stderr,", "); - printPtr((StgPtr)caf->value); - fprintf(stderr,", "); - printPtr((StgPtr)caf->link); - fprintf(stderr,")\n"); - break; - } - case CAF_BLACKHOLE: fprintf(stderr,"CAF_BH("); printPtr((StgPtr)stgCast(StgBlockingQueue*,obj)->blocking_queue); @@ -205,8 +158,7 @@ void printClosure( StgClosure *obj ) case TSO: fprintf(stderr,"TSO("); - fprintf(stderr,"%d (%x)", - stgCast(StgTSO*,obj)->id, stgCast(StgTSO*,obj)); + fprintf(stderr,"%d (%p)",((StgTSO*)obj)->id, (StgTSO*)obj); fprintf(stderr,")\n"); break; @@ -224,6 +176,14 @@ void printClosure( StgClosure *obj ) fprintf(stderr,")\n"); break; +#ifdef DIST + case REMOTE_REF: + fprintf(stderr,"REMOTE_REF("); + printGA((globalAddr *)stgCast(StgFetchMe*,obj)->ga); + fprintf(stderr,")\n"); + break; +#endif + case FETCH_ME_BQ: fprintf(stderr,"FETCH_ME_BQ("); // printGA((globalAddr *)stgCast(StgFetchMe*,obj)->ga); @@ -267,6 +227,23 @@ void printClosure( StgClosure *obj ) 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: @@ -376,16 +353,21 @@ StgPtr printStackObj( StgPtr sp ) } else { StgClosure* c = (StgClosure*)(*sp); printPtr((StgPtr)*sp); -#ifdef INTERPRETER - if (c == &ret_bco_info) { - fprintf(stderr, "\t\t"); - fprintf(stderr, "ret_bco_info\n" ); + if (c == (StgClosure*)&stg_ctoi_ret_R1p_info) { + fprintf(stderr, "\t\t\tstg_ctoi_ret_R1p_info\n" ); + } else + if (c == (StgClosure*)&stg_ctoi_ret_R1n_info) { + fprintf(stderr, "\t\t\tstg_ctoi_ret_R1n_info\n" ); + } else + if (c == (StgClosure*)&stg_ctoi_ret_F1_info) { + fprintf(stderr, "\t\t\tstg_ctoi_ret_F1_info\n" ); + } else + if (c == (StgClosure*)&stg_ctoi_ret_D1_info) { + fprintf(stderr, "\t\t\tstg_ctoi_ret_D1_info\n" ); + } else + if (c == (StgClosure*)&stg_ctoi_ret_V_info) { + fprintf(stderr, "\t\t\tstg_ctoi_ret_V_info\n" ); } else - if (IS_HUGS_CONSTR_INFO(GET_INFO(c))) { - fprintf(stderr, "\t\t\t"); - fprintf(stderr, "ConstrInfoTable\n" ); - } else -#endif if (get_itbl(c)->type == BCO) { fprintf(stderr, "\t\t\t"); fprintf(stderr, "BCO(...)\n"); @@ -551,8 +533,6 @@ static char *closure_type_names[] = { "IND_PERM", /* 31 */ "IND_OLDGEN_PERM", /* 32 */ "IND_STATIC", /* 33 */ - "CAF_UNENTERED", /* 34 */ - "CAF_ENTERED", /* 35 */ "CAF_BLACKHOLE", /* 36 */ "RET_BCO", /* 37 */ "RET_SMALL", /* 38 */ @@ -582,7 +562,8 @@ static char *closure_type_names[] = { "FETCH_ME_BQ", /* 62 */ "RBH", /* 63 */ "EVACUATED", /* 64 */ - "N_CLOSURE_TYPES" /* 65 */ + "REMOTE_REF", /* 65 */ + "N_CLOSURE_TYPES" /* 66 */ }; char * @@ -822,8 +803,7 @@ static void printZcoded( const char *raw ) /* Causing linking trouble on Win32 plats, so I'm disabling this for now. */ -/* For now, BFD support is unconditionally disabled -- HWL */ -#if 0 /* HWL */ && defined(HAVE_BFD_H) && !defined(_WIN32) +#if defined(HAVE_BFD_H) && !defined(_WIN32) && !defined(PAR) && !defined(GRAN) #include @@ -931,6 +911,8 @@ extern void DEBUG_LoadSymbols( char *name STG_UNUSED ) #include "StoragePriv.h" +void findPtr(P_ p); /* keep gcc -Wall happy */ + void findPtr(P_ p) {