Toggle whether the RTS gets build with debugger support for ghci
[ghc-hetmet.git] / rts / sm / Storage.c
index ddae8c6..6e862f2 100644 (file)
@@ -287,6 +287,7 @@ freeStorage (void)
 #if defined(THREADED_RTS)
     closeMutex(&sm_mutex);
     closeMutex(&atomic_modify_mutvar_mutex);
+    stgFree(nurseries);
 #endif
 }
 
@@ -1049,14 +1050,7 @@ void freeExec (void *addr)
     // the head of the queue.
     if (bd->gen_no == 0 && bd != exec_block) {
        debugTrace(DEBUG_gc, "free exec block %p", bd->start);
-       if (bd->u.back) {
-           bd->u.back->link = bd->link;
-       } else {
-           exec_block = bd->link;
-       }
-       if (bd->link) {
-           bd->link->u.back = bd->u.back;
-       }
+        dbl_link_remove(bd, &exec_block);
        setExecutable(bd->start, bd->blocks * BLOCK_SIZE, rtsFalse);
        freeGroup(bd);
     }
@@ -1186,7 +1180,7 @@ memInventory(void)
       debugBelch("  exec         : %4lu\n", exec_blocks);
       debugBelch("  free         : %4lu\n", free_blocks);
       debugBelch("  total        : %4lu\n\n", live_blocks + free_blocks);
-      debugBelch("  in system    : %4lu\n", mblocks_allocated + BLOCKS_PER_MBLOCK);
+      debugBelch("  in system    : %4lu\n", mblocks_allocated * BLOCKS_PER_MBLOCK);
       ASSERT(0);
   }
 }