projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Comments only
[ghc-hetmet.git]
/
rts
/
RtsStartup.c
diff --git
a/rts/RtsStartup.c
b/rts/RtsStartup.c
index
7197800
..
67430dc
100644
(file)
--- a/
rts/RtsStartup.c
+++ b/
rts/RtsStartup.c
@@
-27,6
+27,9
@@
#include "Linker.h"
#include "ThreadLabels.h"
#include "BlockAlloc.h"
#include "Linker.h"
#include "ThreadLabels.h"
#include "BlockAlloc.h"
+#include "Trace.h"
+#include "RtsTypeable.h"
+#include "Stable.h"
#if defined(RTS_GTK_FRONTPANEL)
#include "FrontPanel.h"
#if defined(RTS_GTK_FRONTPANEL)
#include "FrontPanel.h"
@@
-161,6
+164,9
@@
hs_init(int *argc, char **argv[])
setProgArgv(*argc,*argv);
}
setProgArgv(*argc,*argv);
}
+ /* initTracing must be after setupRtsFlags() */
+ initTracing();
+
#if defined(PAR)
/* NB: this really must be done after processing the RTS flags */
IF_PAR_DEBUG(verbose,
#if defined(PAR)
/* NB: this really must be done after processing the RTS flags */
IF_PAR_DEBUG(verbose,
@@
-192,6
+198,9
@@
hs_init(int *argc, char **argv[])
/* initialise the stable pointer table */
initStablePtrTable();
/* initialise the stable pointer table */
initStablePtrTable();
+ /* initialise the shared Typeable store */
+ initTypeableStore();
+
#if defined(DEBUG)
/* initialise thread label table (tso->char*) */
initThreadLabelTable();
#if defined(DEBUG)
/* initialise thread label table (tso->char*) */
initThreadLabelTable();
@@
-202,7
+211,7
@@
hs_init(int *argc, char **argv[])
#endif
/* start the virtual timer 'subsystem'. */
#endif
/* start the virtual timer 'subsystem'. */
- startTimer(TICK_MILLISECS);
+ startTimer();
/* Initialise the stats department */
initStats();
/* Initialise the stats department */
initStats();
@@
-302,6
+311,8
@@
hs_add_root(void (*init_root)(void))
freeGroup_lock(bd);
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.
#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.
@@
-382,10
+393,22
@@
hs_exit(void)
/* stop timing the shutdown, we're about to print stats */
stat_endExit();
/* 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();
// 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();
+
+ /* free hash table storage */
+ exitHashTable();
+
#ifdef RTS_GTK_FRONTPANEL
if (RtsFlags.GcFlags.frontpanel) {
stopFrontPanel();
#ifdef RTS_GTK_FRONTPANEL
if (RtsFlags.GcFlags.frontpanel) {
stopFrontPanel();
@@
-449,6
+472,8
@@
shutdownHaskellAndExit(int n)
static int exit_started=rtsFalse;
#endif
static int exit_started=rtsFalse;
#endif
+void (*exitFn)(int) = 0;
+
void
stg_exit(int n)
{
void
stg_exit(int n)
{
@@
-461,5
+486,7
@@
stg_exit(int n)
IF_PAR_DEBUG(verbose, debugBelch("==-- stg_exit %d on [%x]...", n, mytid));
shutdownParallelSystem(n);
#endif
IF_PAR_DEBUG(verbose, debugBelch("==-- stg_exit %d on [%x]...", n, mytid));
shutdownParallelSystem(n);
#endif
+ if (exitFn)
+ (*exitFn)(n);
exit(n);
}
exit(n);
}