projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ghc-pkg: report parser warnings when registering packages
[ghc-hetmet.git]
/
includes
/
Rts.h
diff --git
a/includes/Rts.h
b/includes/Rts.h
index
3bec799
..
91ec76d
100644
(file)
--- a/
includes/Rts.h
+++ b/
includes/Rts.h
@@
-51,7
+51,17
@@
extern "C" {
// Symbols that are extern, but private to the RTS, are declared
// with visibility "hidden" to hide them outside the RTS shared
// library.
// Symbols that are extern, but private to the RTS, are declared
// with visibility "hidden" to hide them outside the RTS shared
// library.
+#if defined(HAS_VISIBILITY_HIDDEN)
#define RTS_PRIVATE GNUC3_ATTRIBUTE(visibility("hidden"))
#define RTS_PRIVATE GNUC3_ATTRIBUTE(visibility("hidden"))
+#else
+#define RTS_PRIVATE /* disabled: 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
/* Fix for mingw stat problem (done here so it's early enough) */
#ifdef mingw32_HOST_OS
@@
-88,10
+98,18
@@
void _assertFail(const char *filename, unsigned int linenum)
else \
_assertFail(__FILE__, __LINE__)
else \
_assertFail(__FILE__, __LINE__)
+#define CHECKM(predicate, msg, ...) \
+ if (predicate) \
+ /*null*/; \
+ else \
+ barf(msg, ##__VA_ARGS__)
+
#ifndef DEBUG
#define ASSERT(predicate) /* nothing */
#ifndef DEBUG
#define ASSERT(predicate) /* nothing */
+#define ASSERTM(predicate,msg,...) /* nothing */
#else
#define ASSERT(predicate) CHECK(predicate)
#else
#define ASSERT(predicate) CHECK(predicate)
+#define ASSERTM(predicate,msg,...) CHECKM(predicate,msg,##__VA_ARGS__)
#endif /* DEBUG */
/*
#endif /* DEBUG */
/*
@@
-125,9
+143,16
@@
void _assertFail(const char *filename, unsigned int linenum)
#define FMT_Word64 "lu"
#define FMT_Int64 "ld"
#else
#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
#define FMT_Word64 "llu"
#define FMT_Int64 "lld"
#endif
+#endif
/* -----------------------------------------------------------------------------
Include everything STG-ish
/* -----------------------------------------------------------------------------
Include everything STG-ish
@@
-194,6
+219,12
@@
DLL_IMPORT_RTS extern char **prog_argv; /* so we can get at these from Haskell *
DLL_IMPORT_RTS extern int prog_argc;
DLL_IMPORT_RTS extern char *prog_name;
DLL_IMPORT_RTS extern int prog_argc;
DLL_IMPORT_RTS extern char *prog_name;
+#ifdef mingw32_HOST_OS
+// We need these two from Haskell too
+void getWin32ProgArgv(int *argc, wchar_t **argv[]);
+void setWin32ProgArgv(int argc, wchar_t *argv[]);
+#endif
+
void stackOverflow(void);
void stg_exit(int n) GNU_ATTRIBUTE(__noreturn__);
void stackOverflow(void);
void stg_exit(int n) GNU_ATTRIBUTE(__noreturn__);
@@
-217,9
+248,6
@@
int stg_sig_install (int, int, void *);
Miscellaneous garbage
-------------------------------------------------------------------------- */
Miscellaneous garbage
-------------------------------------------------------------------------- */
-/* declarations for runtime flags/values */
-#define MAX_RTS_ARGS 32
-
#ifdef DEBUG
#define TICK_VAR(arity) \
extern StgInt SLOW_CALLS_##arity; \
#ifdef DEBUG
#define TICK_VAR(arity) \
extern StgInt SLOW_CALLS_##arity; \