/* -----------------------------------------------------------------------------
- * $Id: Printer.c,v 1.22 2000/03/17 14:37:21 simonmar Exp $
+ * $Id: Printer.c,v 1.29 2000/12/11 12:40:24 simonmar Exp $
*
* (c) The GHC Team, 1994-2000.
*
#include "RtsUtils.h"
#include "RtsFlags.h"
+#include "MBlock.h"
+#include "Storage.h"
#include "Bytecodes.h" /* for InstrPtr */
#include "Disassembler.h"
* 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;
-}
+char* lookupHugsItblName ( void* itbl );
#endif
void printPtr( StgPtr p )
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;
fprintf(stderr,", ");
printPtr((StgPtr)caf->value); /* should be null */
fprintf(stderr,", ");
- printPtr((StgPtr)caf->link); /* should be null */
+ printPtr((StgPtr)caf->link);
fprintf(stderr,")\n");
break;
}
fprintf(stderr,")\n");
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
case CONSTR:
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:
/* ToDo: will this work for THUNK_STATIC too? */
printStdObject(obj,"THUNK");
break;
-#if 0
+
+ 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! */
+ /* 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;
}
-#endif
+
case UPDATE_FRAME:
{
StgUpdateFrame* u = stgCast(StgUpdateFrame*,obj);
"STABLE_NAME", /* 58 */
"TSO", /* 59 */
"BLOCKED_FETCH", /* 60 */
- "FETCH_ME", /* 61 */
- "EVACUATED", /* 62 */
- "N_CLOSURE_TYPES", /* 63 */
- "FETCH_ME_BQ", /* 64 */
- "RBH" /* 65 */
+ "FETCH_ME", /* 61 */
+ "FETCH_ME_BQ", /* 62 */
+ "RBH", /* 63 */
+ "EVACUATED", /* 64 */
+ "N_CLOSURE_TYPES" /* 65 */
};
char *
#include "StoragePriv.h"
+void findPtr(P_ p); /* keep gcc -Wall happy */
+
void
findPtr(P_ p)
{