X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FRtsStartup.c;h=3fef25912689dbae0922f228c1607bd2b194b308;hb=45c35148be308b3290f1c14240d406f1cb1af166;hp=0406ae6f099b05b821a726734c55e888cd878ef0;hpb=5a2769f0273dd389977e8283375e7920d183bdd4;p=ghc-hetmet.git diff --git a/rts/RtsStartup.c b/rts/RtsStartup.c index 0406ae6..3fef259 100644 --- a/rts/RtsStartup.c +++ b/rts/RtsStartup.c @@ -390,6 +390,12 @@ hs_exit(void) // also outputs the stats (+RTS -s) info. exitStorage(); + /* initialise the stable pointer table */ + exitStablePtrTable(); + + /* free hash table storage */ + exitHashTable(); + #ifdef RTS_GTK_FRONTPANEL if (RtsFlags.GcFlags.frontpanel) { stopFrontPanel(); @@ -453,6 +459,8 @@ shutdownHaskellAndExit(int n) static int exit_started=rtsFalse; #endif +void (*exitFn)(int) = 0; + void stg_exit(int n) { @@ -465,5 +473,7 @@ stg_exit(int n) IF_PAR_DEBUG(verbose, debugBelch("==-- stg_exit %d on [%x]...", n, mytid)); shutdownParallelSystem(n); #endif + if (exitFn) + (*exitFn)(n); exit(n); }