Fix building RTS with gcc 2.*; declare all variables at the top of a block
[ghc-hetmet.git] / rts / RtsStartup.c
index 8be4044..cdb45c6 100644 (file)
@@ -246,6 +246,7 @@ hs_init(int *argc, char **argv[])
     initProfiling1();
 
     /* start the virtual timer 'subsystem'. */
+    initTimer();
     startTimer();
 
     /* Initialise the stats department */
@@ -409,6 +410,7 @@ hs_exit_(rtsBool wait_foreign)
     
     /* stop the ticker */
     stopTimer();
+    exitTimer();
 
     /* reset the standard file descriptors to blocking mode */
     resetNonBlockingFd(0);
@@ -463,8 +465,6 @@ hs_exit_(rtsBool wait_foreign)
     /* free the stable pointer table */
     exitStablePtrTable();
 
-    freeProfiling1();
-
 #if defined(DEBUG)
     /* free the thread label table */
     freeThreadLabelTable();
@@ -481,6 +481,7 @@ hs_exit_(rtsBool wait_foreign)
 #endif
 
     endProfiling();
+    freeProfiling1();
 
 #ifdef PROFILING
     // Originally, this was in report_ccs_profiling().  Now, retainer
@@ -494,7 +495,7 @@ hs_exit_(rtsBool wait_foreign)
 #endif
 
 #if defined(mingw32_HOST_OS) && !defined(THREADED_RTS)
-    shutdownAsyncIO();
+    shutdownAsyncIO(wait_foreign);
 #endif
 
     /* free hash table storage */