X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FRtsStartup.c;h=3e9fd2a077bda78116b34957164326a6026f5a32;hb=51f782f416a8aa05153a9f2dcef34d8bcb79f1ed;hp=3fef25912689dbae0922f228c1607bd2b194b308;hpb=7b1b3279afe25b4e65ee9ebbafc5e9e38a3b888b;p=ghc-hetmet.git diff --git a/rts/RtsStartup.c b/rts/RtsStartup.c index 3fef259..3e9fd2a 100644 --- a/rts/RtsStartup.c +++ b/rts/RtsStartup.c @@ -12,7 +12,6 @@ #include "RtsUtils.h" #include "RtsFlags.h" #include "OSThreads.h" -#include "Storage.h" /* initStorage, exitStorage */ #include "Schedule.h" /* initScheduler */ #include "Stats.h" /* initStats */ #include "STM.h" /* initSTM */ @@ -28,6 +27,9 @@ #include "ThreadLabels.h" #include "BlockAlloc.h" #include "Trace.h" +#include "RtsTypeable.h" +#include "Stable.h" +#include "Hpc.h" #if defined(RTS_GTK_FRONTPANEL) #include "FrontPanel.h" @@ -196,6 +198,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 +211,7 @@ hs_init(int *argc, char **argv[]) #endif /* start the virtual timer 'subsystem'. */ - startTimer(TICK_MILLISECS); + startTimer(); /* Initialise the stats department */ initStats(); @@ -306,6 +311,8 @@ hs_add_root(void (*init_root)(void)) freeGroup_lock(bd); + startupHpc(); + #if defined(PROFILING) || defined(DEBUG) // This must be done after module initialisation. // ToDo: make this work in the presence of multiple hs_add_root()s. @@ -386,10 +393,16 @@ hs_exit(void) /* stop timing the shutdown, we're about to print stats */ stat_endExit(); + /* shutdown the hpc support (if needed) */ + exitHpc(); + // clean up things from the storage manager's point of view. // also outputs the stats (+RTS -s) info. exitStorage(); + /* free shared Typeable store */ + exitTypeableStore(); + /* initialise the stable pointer table */ exitStablePtrTable();