X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FRtsStartup.c;h=937334bdabe3b4125f5dc601b227591c4edada51;hb=80578b7defea703ad24efa908534a13e2ebc880b;hp=dba529bb202d96198d011039c969403f5e4daad7;hpb=de6c8e5293c9ef68b597ab2e6d55c3f42a283489;p=ghc-hetmet.git diff --git a/rts/RtsStartup.c b/rts/RtsStartup.c index dba529b..937334b 100644 --- a/rts/RtsStartup.c +++ b/rts/RtsStartup.c @@ -19,6 +19,7 @@ #include "STM.h" /* initSTM */ #include "Signals.h" #include "RtsSignals.h" +#include "ThrIOManager.h" #include "Timer.h" /* startTimer, stopTimer */ #include "Weak.h" #include "Ticky.h" @@ -137,7 +138,13 @@ hs_init(int *argc, char **argv[]) return; } - /* The very first thing we do is grab the start time...just in case we're +#if defined(DEBUG) + /* Start off by initialising the allocator debugging so we can + * use it anywhere */ + initAllocator(); +#endif + + /* Next we do is grab the start time...just in case we're * collecting timing statistics. */ stat_startInit(); @@ -268,7 +275,7 @@ hs_init(int *argc, char **argv[]) x86_init_fpu(); #endif -#if defined(THREADED_RTS) && !defined(mingw32_HOST_OS) +#if defined(THREADED_RTS) ioManagerStart(); #endif @@ -371,7 +378,7 @@ hs_exit(void) /* start timing the shutdown */ stat_startExit(); -#if defined(THREADED_RTS) && !defined(mingw32_HOST_OS) +#if defined(THREADED_RTS) ioManagerDie(); #endif @@ -431,6 +438,9 @@ hs_exit(void) // also outputs the stats (+RTS -s) info. exitStorage(); + /* free the tasks */ + freeScheduler(); + /* free shared Typeable store */ exitTypeableStore(); @@ -469,8 +479,14 @@ hs_exit(void) shutdownAsyncIO(); #endif - // Finally, free all our storage. + // Finally, free all our storage freeStorage(); + +#if defined(DEBUG) + /* and shut down the allocator debugging */ + shutdownAllocator(); +#endif + } // Compatibility interfaces