X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FRtsStartup.c;h=62a347a44d1bf6e24e28f0a5091b3c1af1b3a98a;hb=a92db2a52d056ab962e4f55d5d8e3997ac3b8e4f;hp=33c742b25ac067253d55d58b769cda6326ba8f48;hpb=9f2ceb4da7dfbc1cfd09ce54610ebe64288b9007;p=ghc-hetmet.git diff --git a/rts/RtsStartup.c b/rts/RtsStartup.c index 33c742b..62a347a 100644 --- a/rts/RtsStartup.c +++ b/rts/RtsStartup.c @@ -28,6 +28,7 @@ #include "ThreadLabels.h" #include "BlockAlloc.h" #include "Trace.h" +#include "RtsTypeable.h" #if defined(RTS_GTK_FRONTPANEL) #include "FrontPanel.h" @@ -196,6 +197,9 @@ hs_init(int *argc, char **argv[]) /* initialise the stable pointer table */ initStablePtrTable(); + /* initialise the shared Typeable store */ + initTypeableStore(); + #if defined(DEBUG) /* initialise thread label table (tso->char*) */ initThreadLabelTable(); @@ -206,7 +210,7 @@ hs_init(int *argc, char **argv[]) #endif /* start the virtual timer 'subsystem'. */ - startTimer(TICK_MILLISECS); + startTimer(); /* Initialise the stats department */ initStats(); @@ -390,6 +394,9 @@ hs_exit(void) // also outputs the stats (+RTS -s) info. exitStorage(); + /* free shared Typeable store */ + exitTypeableStore(); + /* initialise the stable pointer table */ exitStablePtrTable(); @@ -459,6 +466,8 @@ shutdownHaskellAndExit(int n) static int exit_started=rtsFalse; #endif +void (*exitFn)(int) = 0; + void stg_exit(int n) { @@ -471,5 +480,7 @@ stg_exit(int n) IF_PAR_DEBUG(verbose, debugBelch("==-- stg_exit %d on [%x]...", n, mytid)); shutdownParallelSystem(n); #endif + if (exitFn) + (*exitFn)(n); exit(n); }