GHC.Base.breakpoint isn't vaporware anymore.
[ghc-hetmet.git] / ghc / includes / Rts.h
index 45bf815..3ca0d9a 100644 (file)
@@ -29,29 +29,11 @@ extern "C" {
 #define FLEXIBLE_ARRAY 0
 #endif
 
-#if defined(SMP) || defined(THREADED_RTS)
-#define RTS_SUPPORTS_THREADS 1
-#endif
-
 /* Fix for mingw stat problem (done here so it's early enough) */
 #ifdef mingw32_HOST_OS
 #define __MSVCRT__ 1
 #endif
 
-#if defined(__GNUC__)
-#define GNU_ATTRIBUTE(at) __attribute__((at))
-#else
-#define GNU_ATTRIBUTE(at)
-#endif
-
-#if __GNUC__ >= 3 
-#define GNUC3_ATTRIBUTE(at) __attribute__((at))
-#else
-#define GNUC3_ATTRIBUTE(at)
-#endif
-
-#define STG_UNUSED    GNUC3_ATTRIBUTE(__unused__)
-
 /*
  * We often want to know the size of something in units of an
  * StgWord... (rounded up, of course!)
@@ -71,13 +53,13 @@ extern "C" {
 #define ASSERT(predicate) /* nothing */
 #else
 
-void _stgAssert (char *, unsigned int);
+extern void _assertFail (char *, unsigned int);
 
 #define ASSERT(predicate)                      \
        if (predicate)                          \
            /*null*/;                           \
        else                                    \
-           _stgAssert(__FILE__, __LINE__)
+           _assertFail(__FILE__, __LINE__)
 #endif /* DEBUG */
 
 /* 
@@ -88,6 +70,22 @@ void _stgAssert (char *, unsigned int);
 
 #define doNothing() do { } while (0)
 
+#ifdef DEBUG
+#define USED_IF_DEBUG
+#define USED_IF_NOT_DEBUG STG_UNUSED
+#else
+#define USED_IF_DEBUG STG_UNUSED
+#define USED_IF_NOT_DEBUG
+#endif
+
+#ifdef THREADED_RTS
+#define USED_IF_THREADS
+#define USED_IF_NOT_THREADS STG_UNUSED
+#else
+#define USED_IF_THREADS STG_UNUSED
+#define USED_IF_NOT_THREADS
+#endif
+
 /* -----------------------------------------------------------------------------
    Include everything STG-ish
    -------------------------------------------------------------------------- */
@@ -122,15 +120,12 @@ void _stgAssert (char *, unsigned int);
 
 /* Parallel information */
 #include "Parallel.h"
+#include "OSThreads.h"
+#include "SMP.h"
 
 /* STG/Optimised-C related stuff */
-#include "SMP.h"
 #include "Block.h"
 
-#ifdef SMP
-#include <pthread.h>
-#endif
-
 /* GNU mp library */
 #include "gmp.h"