projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
remove empty dir
[ghc-hetmet.git]
/
ghc
/
rts
/
RtsStartup.c
diff --git
a/ghc/rts/RtsStartup.c
b/ghc/rts/RtsStartup.c
index
f9b1c85
..
147de7b
100644
(file)
--- a/
ghc/rts/RtsStartup.c
+++ b/
ghc/rts/RtsStartup.c
@@
-17,6
+17,7
@@
#include "Stats.h" /* initStats */
#include "STM.h" /* initSTM */
#include "Signals.h"
#include "Stats.h" /* initStats */
#include "STM.h" /* initSTM */
#include "Signals.h"
+#include "RtsSignals.h"
#include "Timer.h" /* startTimer, stopTimer */
#include "Weak.h"
#include "Ticky.h"
#include "Timer.h" /* startTimer, stopTimer */
#include "Weak.h"
#include "Ticky.h"
@@
-217,8
+218,6
@@
hs_init(int *argc, char **argv[])
startupAsyncIO();
#endif
startupAsyncIO();
#endif
- initSTM();
-
#ifdef RTS_GTK_FRONTPANEL
if (RtsFlags.GcFlags.frontpanel) {
initFrontPanel();
#ifdef RTS_GTK_FRONTPANEL
if (RtsFlags.GcFlags.frontpanel) {
initFrontPanel();
@@
-277,12
+276,8
@@
void
hs_add_root(void (*init_root)(void))
{
bdescr *bd;
hs_add_root(void (*init_root)(void))
{
bdescr *bd;
-#ifdef SMP
- Capability cap;
-#else
-#define cap MainCapability
-#endif
nat init_sp;
nat init_sp;
+ Capability *cap = &MainCapability;
if (hs_init_count <= 0) {
barf("hs_add_root() must be called after hs_init()");
if (hs_init_count <= 0) {
barf("hs_add_root() must be called after hs_init()");
@@
-298,8
+293,8
@@
hs_add_root(void (*init_root)(void))
init_stack[--init_sp] = (F_)init_root;
}
init_stack[--init_sp] = (F_)init_root;
}
- cap.r.rSp = (P_)(init_stack + init_sp);
- StgRun((StgFunPtr)stg_init, &cap.r);
+ cap->r.rSp = (P_)(init_stack + init_sp);
+ StgRun((StgFunPtr)stg_init, &cap->r);
freeGroup_lock(bd);
freeGroup_lock(bd);
@@
-318,7
+313,8
@@
void
hs_exit(void)
{
if (hs_init_count <= 0) {
hs_exit(void)
{
if (hs_init_count <= 0) {
- barf("too many hs_exit()s");
+ errorBelch("warning: too many hs_exit()s");
+ return;
}
hs_init_count--;
if (hs_init_count > 0) {
}
hs_init_count--;
if (hs_init_count > 0) {
@@
-378,9
+374,8
@@
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();
- /* clean up things from the storage manager's point of view.
- * also outputs the stats (+RTS -s) info.
- */
+ // clean up things from the storage manager's point of view.
+ // also outputs the stats (+RTS -s) info.
exitStorage();
#ifdef RTS_GTK_FRONTPANEL
exitStorage();
#ifdef RTS_GTK_FRONTPANEL
@@
-403,7
+398,7
@@
hs_exit(void)
// during endProfiling().
fclose(prof_file);
#endif
// during endProfiling().
fclose(prof_file);
#endif
-
+
#if defined(TICKY_TICKY)
if (RtsFlags.TickyFlags.showTickyStats) PrintTickyInfo();
#endif
#if defined(TICKY_TICKY)
if (RtsFlags.TickyFlags.showTickyStats) PrintTickyInfo();
#endif
@@
-411,6
+406,9
@@
hs_exit(void)
#if defined(mingw32_HOST_OS)
shutdownAsyncIO();
#endif
#if defined(mingw32_HOST_OS)
shutdownAsyncIO();
#endif
+
+ // Finally, free all our storage.
+ freeStorage();
}
// Compatibility interfaces
}
// Compatibility interfaces