Extend ModBreaks with the srcspan's of the enclosing expressions
[ghc-hetmet.git] / rts / Main.c
index 5a1ab10..5f16fa3 100644 (file)
 #include "Rts.h"
 #include "RtsAPI.h"
 #include "SchedAPI.h"
-#include "Schedule.h"
 #include "RtsFlags.h"
 #include "RtsUtils.h"
 #include "Prelude.h"
 #include "Task.h"
+#include "seh_excn.h"
 #include <stdlib.h>
 
 #ifdef DEBUG
@@ -49,6 +49,7 @@ int main(int argc, char *argv[])
     SchedulerStatus status;
     /* all GranSim/GUM init is done in startupHaskell; sets IAmMainThread! */
 
+    BEGIN_CATCH
     startupHaskell(argc,argv,__stginit_ZCMain);
 
     /* kick off the computation by creating the main thread with a pointer
@@ -102,7 +103,7 @@ int main(int argc, char *argv[])
 
     /* ToDo: want to start with a larger stack size */
     { 
-       void *cap = rts_lock();
+       Capability *cap = rts_lock();
        cap = rts_evalLazyIO(cap,(HaskellObj)(void *)mainIO_closure, NULL);
        status = rts_getSchedStatus(cap);
        taskTimeStamp(myTask());
@@ -134,6 +135,8 @@ int main(int argc, char *argv[])
       barf("main thread completed with invalid status");
     }
     shutdownHaskellAndExit(exit_status);
-    return 0; /* never reached, keep gcc -Wall happy */
+    END_CATCH
+    return 0; /* not reached unless a Windows exception happens,
+                 also keeps gcc -Wall happy */
 }
 # endif /* BATCH_MODE */