[project @ 2005-03-10 14:03:28 by simonmar]
[ghc-hetmet.git] / ghc / rts / ProfHeap.c
index e7d03be..9fbfbfe 100644 (file)
@@ -1,5 +1,4 @@
 /* -----------------------------------------------------------------------------
- * $Id: ProfHeap.c,v 1.52 2004/05/11 18:36:10 panne Exp $
  *
  * (c) The GHC Team, 1998-2003
  *
@@ -47,7 +46,7 @@
  * When era reaches max_era, the profiling stops because a closure can
  * store only up to (max_era - 1) as its creation or last use time.
  * -------------------------------------------------------------------------- */
-nat era;
+unsigned int era;
 static nat max_era;
 
 /* -----------------------------------------------------------------------------
@@ -250,6 +249,7 @@ LDV_recordDead( StgClosure *c, nat size )
 
     if (era > 0 && closureSatisfiesConstraints(c)) {
        size -= sizeofW(StgProfHeader);
+       ASSERT(LDVW(c) != 0);
        if ((LDVW((c)) & LDV_STATE_MASK) == LDV_STATE_CREATE) {
            t = (LDVW((c)) & LDV_CREATE_MASK) >> LDV_SHIFT;
            if (t < era) {
@@ -331,7 +331,7 @@ nextEra( void )
        era++;
 
        if (era == max_era) {
-           prog_belch("maximum number of censuses reached; use +RTS -i to reduce");
+           errorBelch("maximum number of censuses reached; use +RTS -i to reduce");
            stg_exit(EXIT_FAILURE);
        }
        
@@ -367,7 +367,7 @@ void initProfiling2( void )
     
     /* open the log file */
     if ((hp_file = fopen(hp_filename, "w")) == NULL) {
-      fprintf(stderr, "Can't open profiling report file %s\n", 
+      debugBelch("Can't open profiling report file %s\n", 
              hp_filename);
       RtsFlags.ProfFlags.doHeapProfile = 0;
       return;
@@ -405,7 +405,7 @@ initHeapProfiling(void)
 
 #ifdef PROFILING
     if (doingLDVProfiling() && doingRetainerProfiling()) {
-       prog_belch("cannot mix -hb and -hr");
+       errorBelch("cannot mix -hb and -hr");
        stg_exit(1);
     }
 #endif
@@ -566,7 +566,7 @@ rtsBool
 strMatchesSelector( char* str, char* sel )
 {
    char* p;
-   // fprintf(stderr, "str_matches_selector %s %s\n", str, sel);
+   // debugBelch("str_matches_selector %s %s\n", str, sel);
    while (1) {
        // Compare str against wherever we've got to in sel.
        p = str;
@@ -695,8 +695,8 @@ aggregateCensusInfo( void )
                // totals *must* be zero.
                ASSERT(c->c.ldv.void_total == 0 && c->c.ldv.drag_total == 0);
 
-               // fprintCCS(stderr,c->identity);
-               // fprintf(stderr," census=%d void_total=%d drag_total=%d\n",
+               // debugCCS(c->identity);
+               // debugBelch(" census=%d void_total=%d drag_total=%d\n",
                //         t, c->c.ldv.void_total, c->c.ldv.drag_total);
            } else {
                d->c.ldv.void_total += c->c.ldv.void_total;
@@ -907,7 +907,6 @@ heapCensusChain( Census *census, bdescr *bd )
            case FOREIGN:
            case STABLE_NAME:
            case MUT_VAR:
-           case MUT_CONS:
                prim = rtsTrue;
                size = sizeW_fromITBL(info);
                break;