X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=includes%2FRts.h;h=d79e9ad88edcf735950c6af15709b8335a24b113;hb=c93bd73f12d7036d297d00fc4082699f568c7d43;hp=753a66436b848804d542830dc791394f1dea5326;hpb=9a9803e8dc80ba41bd3e2d31228e64fa6b61060e;p=ghc-hetmet.git diff --git a/includes/Rts.h b/includes/Rts.h index 753a664..d79e9ad 100644 --- a/includes/Rts.h +++ b/includes/Rts.h @@ -65,6 +65,12 @@ extern "C" { #define END_RTS_PRIVATE /* disabled: END_RTS_PRIVATE */ #endif +#if __GNUC__ > 4 +#define RTS_UNLIKELY(p) __builtin_expect((p),0) +#else +#define RTS_UNLIKELY(p) p +#endif + /* Fix for mingw stat problem (done here so it's early enough) */ #ifdef mingw32_HOST_OS #define __MSVCRT__ 1 @@ -100,10 +106,18 @@ void _assertFail(const char *filename, unsigned int linenum) else \ _assertFail(__FILE__, __LINE__) +#define CHECKM(predicate, msg, ...) \ + if (predicate) \ + /*null*/; \ + else \ + barf(msg, ##__VA_ARGS__) + #ifndef DEBUG #define ASSERT(predicate) /* nothing */ +#define ASSERTM(predicate,msg,...) /* nothing */ #else #define ASSERT(predicate) CHECK(predicate) +#define ASSERTM(predicate,msg,...) CHECKM(predicate,msg,##__VA_ARGS__) #endif /* DEBUG */ /* @@ -137,9 +151,16 @@ void _assertFail(const char *filename, unsigned int linenum) #define FMT_Word64 "lu" #define FMT_Int64 "ld" #else +#if defined(mingw32_HOST_OS) +/* mingw doesn't understand %llu/%lld - it treats them as 32-bit + rather than 64-bit */ +#define FMT_Word64 "I64u" +#define FMT_Int64 "I64d" +#else #define FMT_Word64 "llu" #define FMT_Int64 "lld" #endif +#endif /* ----------------------------------------------------------------------------- Include everything STG-ish