Free more things that we allocate
[ghc-hetmet.git] / rts / ProfHeap.c
index 4aecd0b..e93151d 100644 (file)
@@ -316,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.
@@ -355,6 +362,10 @@ void initProfiling1( void )
 {
 }
 
+void freeProfiling1( void )
+{
+}
+
 void initProfiling2( void )
 {
   if (RtsFlags.ProfFlags.doHeapProfile) {
@@ -493,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);