X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FRtsStartup.c;h=f0b39d6a0a912370bfa314c32a894253b62a5cd5;hb=a60af39758448f92d8eaa3b62072f9adcdbbee9d;hp=7193876970c59c87063f1ee84f48fb38236eef46;hpb=ed12b7043fa98928f75c289a756fbcef546315f8;p=ghc-hetmet.git diff --git a/rts/RtsStartup.c b/rts/RtsStartup.c index 7193876..f0b39d6 100644 --- a/rts/RtsStartup.c +++ b/rts/RtsStartup.c @@ -38,8 +38,9 @@ #include "FrontPanel.h" #endif -#if defined(PROFILING) || defined(DEBUG) # include "Profiling.h" + +#if defined(PROFILING) # include "ProfHeap.h" # include "RetainerProfile.h" #endif @@ -244,9 +245,7 @@ hs_init(int *argc, char **argv[]) initThreadLabelTable(); #endif -#if defined(PROFILING) || defined(DEBUG) initProfiling1(); -#endif /* start the virtual timer 'subsystem'. */ startTimer(); @@ -255,10 +254,12 @@ hs_init(int *argc, char **argv[]) initStats(); #if defined(RTS_USER_SIGNALS) - /* Initialise the user signal handler set */ - initUserSignals(); - /* Set up handler to run on SIGINT, etc. */ - initDefaultHandlers(); + if (RtsFlags.MiscFlags.install_signal_handlers) { + /* Initialise the user signal handler set */ + initUserSignals(); + /* Set up handler to run on SIGINT, etc. */ + initDefaultHandlers(); + } #endif #if defined(mingw32_HOST_OS) && !defined(THREADED_RTS) @@ -351,11 +352,9 @@ hs_add_root(void (*init_root)(void)) 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. initProfiling2(); -#endif } /* ----------------------------------------------------------------------------- @@ -379,7 +378,9 @@ hs_exit(void) stat_startExit(); #if defined(RTS_USER_SIGNALS) - freeSignalHandlers(); + if (RtsFlags.MiscFlags.install_signal_handlers) { + freeSignalHandlers(); + } #endif #if defined(THREADED_RTS) @@ -397,7 +398,7 @@ hs_exit(void) /* stop the ticker */ stopTimer(); - + /* reset the standard file descriptors to blocking mode */ resetNonBlockingFd(0); resetNonBlockingFd(1); @@ -451,18 +452,13 @@ hs_exit(void) /* free the stable pointer table */ exitStablePtrTable(); -#if defined(PROFILING) || defined(DEBUG) freeProfiling1(); -#endif #if defined(DEBUG) /* free the thread label table */ freeThreadLabelTable(); #endif - /* free hash table storage */ - exitHashTable(); - #ifdef RTS_GTK_FRONTPANEL if (RtsFlags.GcFlags.frontpanel) { stopFrontPanel(); @@ -473,9 +469,7 @@ hs_exit(void) reportCCSProfiling(); #endif -#if defined(PROFILING) || defined(DEBUG) endProfiling(); -#endif #ifdef PROFILING // Originally, this was in report_ccs_profiling(). Now, retainer @@ -492,6 +486,9 @@ hs_exit(void) shutdownAsyncIO(); #endif + /* free hash table storage */ + exitHashTable(); + // Finally, free all our storage freeStorage();