GHCi should not filter instances involving cTuples
[ghc.git] / ghc / hschooks.c
index 4c588d0..87feab3 100644 (file)
@@ -5,13 +5,20 @@ in instead of the defaults.
 */
 
 #include "../rts/PosixSource.h"
+
+/*
+ * This should be linked against Rts.h from the compiler which is compiling us.
+ * For instance, if we are compiling this file to produce the stage1 compiler,
+ * we should use Rts.h from stage0.
+ */
 #include "Rts.h"
 
 #include "HsFFI.h"
 
 #include <string.h>
+#include <stdbool.h>
 
-#ifdef HAVE_UNISTD_H
+#if defined(HAVE_UNISTD_H)
 #include <unistd.h>
 #endif
 
@@ -30,14 +37,10 @@ initGCStatistics(void)
 void
 defaultsHook (void)
 {
-#if __GLASGOW_HASKELL__ >= 707
     // This helps particularly with large compiles, but didn't work
     // very well with earlier GHCs because it caused large amounts of
     // fragmentation.  See rts/sm/BlockAlloc.c:allocLargeChunk().
-    RtsFlags.GcFlags.heapSizeSuggestionAuto = rtsTrue;
-#else
-    RtsFlags.GcFlags.heapSizeSuggestion = 6*1024*1024 / BLOCK_SIZE;
-#endif
+    RtsFlags.GcFlags.heapSizeSuggestionAuto = true;
 
     RtsFlags.GcFlags.maxStkSize         = 512*1024*1024 / sizeof(W_);
 
@@ -45,16 +48,25 @@ defaultsHook (void)
 
     // See #3408: the default idle GC time of 0.3s is too short on
     // Windows where we receive console events once per second or so.
-#if __GLASGOW_HASKELL__ >= 703
     RtsFlags.GcFlags.idleGCDelayTime = SecondsToTime(5);
-#else
-    RtsFlags.GcFlags.idleGCDelayTime = 5*1000;
-#endif
 }
 
 void
 StackOverflowHook (StgWord stack_size)    /* in bytes */
 {
-    fprintf(stderr, "GHC stack-space overflow: current limit is %zu bytes.\nUse the `-K<size>' option to increase it.\n", (size_t)stack_size);
+    fprintf(stderr,
+            "GHC stack-space overflow: current limit is %zu bytes.\n"
+            "Use the `-K<size>' option to increase it.\n",
+            (size_t) stack_size);
 }
 
+int main (int argc, char *argv[])
+{
+    RtsConfig conf = defaultRtsConfig;
+    conf.defaultsHook = defaultsHook;
+    conf.rts_opts_enabled = RtsOptsAll;
+    conf.stackOverflowHook = StackOverflowHook;
+    extern StgClosure ZCMain_main_closure;
+
+    hs_main(argc, argv, &ZCMain_main_closure, conf);
+}