X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FRtsStartup.c;h=2a288b7d009777fbea62b2bc35da6200a42e54f2;hb=e030a747f89512121e582d302986ff6732ebb0c6;hp=4066f4894f447529a31c7290352b30e11bec7c09;hpb=ea0e6441f8b7f3c8fb4d0042d6c066271b83f729;p=ghc-hetmet.git diff --git a/ghc/rts/RtsStartup.c b/ghc/rts/RtsStartup.c index 4066f48..2a288b7 100644 --- a/ghc/rts/RtsStartup.c +++ b/ghc/rts/RtsStartup.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: RtsStartup.c,v 1.61 2002/02/04 20:25:39 sof Exp $ + * $Id: RtsStartup.c,v 1.66 2002/08/16 13:29:06 simonmar Exp $ * * (c) The GHC Team, 1998-2000 * @@ -25,6 +25,7 @@ #include "Prelude.h" /* fixupRTStoPreludeRefs */ #include "HsFFI.h" #include "Linker.h" +#include "ThreadLabels.h" #if defined(RTS_GTK_FRONTPANEL) #include "FrontPanel.h" @@ -49,6 +50,8 @@ # include "LLC.h" #endif +#include + /* * Flag Structure */ @@ -156,6 +159,9 @@ startupHaskell(int argc, char *argv[], void (*init_root)(void)) /* initialise the stable pointer table */ initStablePtrTable(); + /* initialise thread label table (tso->char*) */ + initThreadLabelTable(); + #if defined(PROFILING) || defined(DEBUG) initProfiling1(); #endif @@ -220,7 +226,6 @@ startupHaskell(int argc, char *argv[], void (*init_root)(void)) */ #define INIT_STACK_BLOCKS 4 F_ *init_stack = NULL; -nat init_sp = 0; static void initModules ( void (*init_root)(void) ) @@ -231,6 +236,7 @@ initModules ( void (*init_root)(void) ) #else #define cap MainCapability #endif + nat init_sp; init_sp = 0; bd = allocGroup(INIT_STACK_BLOCKS); @@ -272,10 +278,14 @@ shutdownHaskell(void) { if (!rts_has_started_up) return; - + rts_has_started_up=0; + /* start timing the shutdown */ stat_startExit(); + /* stop all running tasks */ + exitScheduler(); + #if !defined(GRAN) /* Finalize any remaining weak pointers */ finalizeWeakPointersNow(); @@ -287,9 +297,6 @@ shutdownHaskell(void) end_gr_simulation(); #endif - /* stop all running tasks */ - exitScheduler(); - /* stop the ticker */ stopVirtTimer(); @@ -338,8 +345,6 @@ shutdownHaskell(void) #if defined(TICKY_TICKY) if (RtsFlags.TickyFlags.showTickyStats) PrintTickyInfo(); #endif - - rts_has_started_up=0; } /*