projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
small cleanups
[ghc-hetmet.git]
/
rts
/
RtsStartup.c
diff --git
a/rts/RtsStartup.c
b/rts/RtsStartup.c
index
dba529b
..
deb38e0
100644
(file)
--- a/
rts/RtsStartup.c
+++ b/
rts/RtsStartup.c
@@
-19,6
+19,7
@@
#include "STM.h" /* initSTM */
#include "Signals.h"
#include "RtsSignals.h"
#include "STM.h" /* initSTM */
#include "Signals.h"
#include "RtsSignals.h"
+#include "ThrIOManager.h"
#include "Timer.h" /* startTimer, stopTimer */
#include "Weak.h"
#include "Ticky.h"
#include "Timer.h" /* startTimer, stopTimer */
#include "Weak.h"
#include "Ticky.h"
@@
-137,7
+138,13
@@
hs_init(int *argc, char **argv[])
return;
}
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();
* collecting timing statistics.
*/
stat_startInit();
@@
-268,7
+275,7
@@
hs_init(int *argc, char **argv[])
x86_init_fpu();
#endif
x86_init_fpu();
#endif
-#if defined(THREADED_RTS) && !defined(mingw32_HOST_OS)
+#if defined(THREADED_RTS)
ioManagerStart();
#endif
ioManagerStart();
#endif
@@
-371,7
+378,11
@@
hs_exit(void)
/* start timing the shutdown */
stat_startExit();
/* start timing the shutdown */
stat_startExit();
-#if defined(THREADED_RTS) && !defined(mingw32_HOST_OS)
+#if defined(RTS_USER_SIGNALS)
+ freeSignalHandlers();
+#endif
+
+#if defined(THREADED_RTS)
ioManagerDie();
#endif
ioManagerDie();
#endif
@@
-386,7
+397,7
@@
hs_exit(void)
/* stop the ticker */
stopTimer();
/* stop the ticker */
stopTimer();
-
+
/* reset the standard file descriptors to blocking mode */
resetNonBlockingFd(0);
resetNonBlockingFd(1);
/* reset the standard file descriptors to blocking mode */
resetNonBlockingFd(0);
resetNonBlockingFd(1);
@@
-431,12
+442,24
@@
hs_exit(void)
// also outputs the stats (+RTS -s) info.
exitStorage();
// also outputs the stats (+RTS -s) info.
exitStorage();
+ /* free the tasks */
+ freeScheduler();
+
/* free shared Typeable store */
exitTypeableStore();
/* free shared Typeable store */
exitTypeableStore();
- /* initialise the stable pointer table */
+ /* free the stable pointer table */
exitStablePtrTable();
exitStablePtrTable();
+#if defined(PROFILING) || defined(DEBUG)
+ freeProfiling1();
+#endif
+
+#if defined(DEBUG)
+ /* free the thread label table */
+ freeThreadLabelTable();
+#endif
+
/* free hash table storage */
exitHashTable();
/* free hash table storage */
exitHashTable();
@@
-469,8
+492,14
@@
hs_exit(void)
shutdownAsyncIO();
#endif
shutdownAsyncIO();
#endif
- // Finally, free all our storage.
+ // Finally, free all our storage
freeStorage();
freeStorage();
+
+#if defined(DEBUG)
+ /* and shut down the allocator debugging */
+ shutdownAllocator();
+#endif
+
}
// Compatibility interfaces
}
// Compatibility interfaces