Fixed uninitialised FunBind fun_tick field
[ghc-hetmet.git] / rts / ProfHeap.c
index 0ee53f3..e93151d 100644 (file)
@@ -19,7 +19,6 @@
 #include "RtsUtils.h"
 #include "RtsFlags.h"
 #include "Profiling.h"
-#include "Storage.h"
 #include "ProfHeap.h"
 #include "Stats.h"
 #include "Hash.h"
@@ -317,6 +316,13 @@ initEra(Census *census)
     census->drag_total = 0;
 }
 
+STATIC_INLINE void
+freeEra(Census *census)
+{
+    arenaFree(census->arena);
+    freeHashTable(census->hash, NULL);
+}
+
 /* --------------------------------------------------------------------------
  * Increases era by 1 and initialize census[era].
  * Reallocates gi[] and increases its size if needed.
@@ -356,6 +362,10 @@ void initProfiling1( void )
 {
 }
 
+void freeProfiling1( void )
+{
+}
+
 void initProfiling2( void )
 {
   if (RtsFlags.ProfFlags.doHeapProfile) {
@@ -494,6 +504,14 @@ endHeapProfiling(void)
     }
 #endif
 
+    {
+        nat t;
+        for (t = 0; t <= era; t++) {
+            freeEra( &censuses[t] );
+        }
+    }
+    stgFree(censuses);
+
     seconds = mut_user_time();
     printSample(rtsTrue, seconds);
     printSample(rtsFalse, seconds);
@@ -541,10 +559,10 @@ fprint_ccs(FILE *fp, CostCentreStack *ccs, nat max_length)
            p += buf_append(p, ccs->cc->module, buf_end);
            p += buf_append(p, ".CAF", buf_end);
        } else {
+           p += buf_append(p, ccs->cc->label, buf_end);
            if (ccs->prevStack != NULL && ccs->prevStack != CCS_MAIN) {
                p += buf_append(p, "/", buf_end);
            }
-           p += buf_append(p, ccs->cc->label, buf_end);
        }
        
        if (p >= buf_end) {