[project @ 2005-03-02 11:06:58 by simonmar]
[ghc-hetmet.git] / ghc / rts / RtsStartup.c
index d605328..af39aa6 100644 (file)
@@ -14,6 +14,7 @@
 #include "Storage.h"    /* initStorage, exitStorage */
 #include "Schedule.h"   /* initScheduler */
 #include "Stats.h"      /* initStats */
+#include "STM.h"        /* initSTM */
 #include "Signals.h"
 #include "Timer.h"      /* startTimer, stopTimer */
 #include "Weak.h"
@@ -48,7 +49,7 @@
 # include "LLC.h"
 #endif
 
-#if defined(mingw32_TARGET_OS)
+#if defined(mingw32_HOST_OS)
 #include "win32/AsyncIO.h"
 #endif
 
@@ -158,8 +159,7 @@ hs_init(int *argc, char **argv[])
     /* Parse the flags, separating the RTS flags from the programs args */
     if (argc != NULL && argv != NULL) {
        setupRtsFlags(argc, *argv, &rts_argc, rts_argv);
-       prog_argc = *argc;
-       prog_argv = *argv;
+       setProgArgv(*argc,*argv);
     }
 
 #if defined(PAR)
@@ -193,8 +193,10 @@ hs_init(int *argc, char **argv[])
     /* initialise the stable pointer table */
     initStablePtrTable();
 
+#if defined(DEBUG)
     /* initialise thread label table (tso->char*) */
     initThreadLabelTable();
+#endif
 
 #if defined(PROFILING) || defined(DEBUG)
     initProfiling1();
@@ -213,10 +215,12 @@ hs_init(int *argc, char **argv[])
     initDefaultHandlers();
 #endif
  
-#if defined(mingw32_TARGET_OS)
+#if defined(mingw32_HOST_OS)
     startupAsyncIO();
 #endif
 
+    initSTM();
+
 #ifdef RTS_GTK_FRONTPANEL
     if (RtsFlags.GcFlags.frontpanel) {
        initFrontPanel();
@@ -245,31 +249,6 @@ startupHaskell(int argc, char *argv[], void (*init_root)(void))
 
 
 /* -----------------------------------------------------------------------------
-   Getting/Setting the program's arguments.
-
-   These are used by System.Environment.
-   -------------------------------------------------------------------------- */
-
-void
-getProgArgv(int *argc, char **argv[])
-{
-    if (argc) { *argc = prog_argc; }
-    if (argv) { *argv = prog_argv; }
-}
-
-void
-setProgArgv(int argc, char *argv[])
-{
-   /* Usually this is done by startupHaskell, so we don't need to call this. 
-      However, sometimes Hugs wants to change the arguments which Haskell
-      getArgs >>= ... will be fed.  So you can do that by calling here
-      _after_ calling startupHaskell.
-   */
-   prog_argc = argc;
-   prog_argv = argv;
-}
-
-/* -----------------------------------------------------------------------------
    Per-module initialisation
 
    This process traverses all the compiled modules in the program
@@ -355,11 +334,6 @@ hs_exit(void)
     /* start timing the shutdown */
     stat_startExit();
     
-#if !defined(GRAN)
-    /* Finalize any remaining weak pointers */
-    finalizeWeakPointersNow();
-#endif
-    
     /* stop all running tasks */
     exitScheduler();
     
@@ -439,7 +413,7 @@ hs_exit(void)
     if (RtsFlags.TickyFlags.showTickyStats) PrintTickyInfo();
 #endif
 
-#if defined(mingw32_TARGET_OS)
+#if defined(mingw32_HOST_OS)
     shutdownAsyncIO();
 #endif
 }