projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use work-stealing for load-balancing in the GC
[ghc-hetmet.git]
/
includes
/
Rts.h
diff --git
a/includes/Rts.h
b/includes/Rts.h
index
eba8146
..
1d455f0
100644
(file)
--- a/
includes/Rts.h
+++ b/
includes/Rts.h
@@
-18,6
+18,9
@@
extern "C" {
#endif
#include "Stg.h"
#endif
#include "Stg.h"
+// ToDo: move RtsExternal stuff elsewhere
+#include "RtsExternal.h"
+
// Turn off inlining when debugging - it obfuscates things
#ifdef DEBUG
# undef STATIC_INLINE
// Turn off inlining when debugging - it obfuscates things
#ifdef DEBUG
# undef STATIC_INLINE
@@
-35,6
+38,12
@@
extern "C" {
#define FLEXIBLE_ARRAY 0
#endif
#define FLEXIBLE_ARRAY 0
#endif
+#if __GNUC__ >= 3
+#define ATTRIBUTE_ALIGNED(n) __attribute__((aligned(n)))
+#else
+#define ATTRIBUTE_ALIGNED(n) /*nothing*/
+#endif
+
/* Fix for mingw stat problem (done here so it's early enough) */
#ifdef mingw32_HOST_OS
#define __MSVCRT__ 1
/* Fix for mingw stat problem (done here so it's early enough) */
#ifdef mingw32_HOST_OS
#define __MSVCRT__ 1
@@
-48,7
+57,9
@@
extern "C" {
* We often want to know the size of something in units of an
* StgWord... (rounded up, of course!)
*/
* We often want to know the size of something in units of an
* StgWord... (rounded up, of course!)
*/
-#define sizeofW(t) ((sizeof(t)+sizeof(W_)-1)/sizeof(W_))
+#define ROUNDUP_BYTES_TO_WDS(n) (((n) + sizeof(W_) - 1) / sizeof(W_))
+
+#define sizeofW(t) ROUNDUP_BYTES_TO_WDS(sizeof(t))
/*
* It's nice to be able to grep for casts
/*
* It's nice to be able to grep for casts
@@
-165,7
+176,8
@@
TAG_CLOSURE(StgWord tag,StgClosure * p)
/* Parallel information */
#include "Parallel.h"
#include "OSThreads.h"
/* Parallel information */
#include "Parallel.h"
#include "OSThreads.h"
-#include "SMP.h"
+#include "SMPClosureOps.h"
+#include "SpinLock.h"
/* GNU mp library */
#if defined(HAVE_FRAMEWORK_GMP)
/* GNU mp library */
#if defined(HAVE_FRAMEWORK_GMP)
@@
-202,6
+214,8
@@
extern void stackOverflow(void);
extern void __decodeDouble (MP_INT *man, I_ *_exp, StgDouble dbl);
extern void __decodeFloat (MP_INT *man, I_ *_exp, StgFloat flt);
extern void __decodeDouble (MP_INT *man, I_ *_exp, StgDouble dbl);
extern void __decodeFloat (MP_INT *man, I_ *_exp, StgFloat flt);
+extern void __decodeDouble_2Int (I_ *man_sign, W_ *man_high, W_ *man_low, I_ *exp, StgDouble dbl);
+extern void __decodeFloat_Int (I_ *man, I_ *exp, StgFloat flt);
#if defined(WANT_DOTNET_SUPPORT)
#include "DNInvoke.h"
#if defined(WANT_DOTNET_SUPPORT)
#include "DNInvoke.h"
@@
-258,7
+272,11
@@
TICK_VAR(2)
-------------------------------------------------------------------------- */
#ifdef DEBUG
-------------------------------------------------------------------------- */
#ifdef DEBUG
+#if IN_STG_CODE
+#define IF_DEBUG(c,s) if (RtsFlags[0].DebugFlags.c) { s; }
+#else
#define IF_DEBUG(c,s) if (RtsFlags.DebugFlags.c) { s; }
#define IF_DEBUG(c,s) if (RtsFlags.DebugFlags.c) { s; }
+#endif
#else
#define IF_DEBUG(c,s) doNothing()
#endif
#else
#define IF_DEBUG(c,s) doNothing()
#endif