X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=includes%2FRts.h;h=59edc09e83ab5b8df996b45621f5db0f8090bc23;hb=94363dd5c2c443db08e5d3885b582247822c43b3;hp=a62747e4384d92ef61750c1f74ae622763d9018b;hpb=b4ee9a92737e40ac0133f833781d01a8589f2cb7;p=ghc-hetmet.git diff --git a/includes/Rts.h b/includes/Rts.h index a62747e..59edc09 100644 --- a/includes/Rts.h +++ b/includes/Rts.h @@ -18,6 +18,12 @@ extern "C" { #endif #include "Stg.h" +// Turn off inlining when debugging - it obfuscates things +#ifdef DEBUG +# undef STATIC_INLINE +# define STATIC_INLINE static +#endif + #include "RtsTypes.h" #if __GNUC__ >= 3 @@ -57,7 +63,7 @@ extern "C" { #define ASSERT(predicate) /* nothing */ #else -extern void _assertFail (char *, unsigned int); +extern void _assertFail (const char *, unsigned int); #define ASSERT(predicate) \ if (predicate) \ @@ -90,6 +96,17 @@ extern void _assertFail (char *, unsigned int); #define USED_IF_NOT_THREADS #endif +/* + * Getting printf formats right for platform-dependent typedefs + */ +#if SIZEOF_LONG == 8 +#define FMT_Word64 "lu" +#define FMT_Int64 "ld" +#else +#define FMT_Word64 "llu" +#define FMT_Int64 "lld" +#endif + /* ----------------------------------------------------------------------------- Include everything STG-ish -------------------------------------------------------------------------- */ @@ -127,21 +144,24 @@ extern void _assertFail (char *, unsigned int); #include "OSThreads.h" #include "SMP.h" -/* STG/Optimised-C related stuff */ -#include "Block.h" - /* GNU mp library */ #include "gmp.h" /* Macros for STG/C code */ +#include "Block.h" #include "ClosureMacros.h" -#include "StgTicky.h" -#include "Stable.h" + + /* Ticky-ticky counters */ +#include "TickyCounters.h" /* Runtime-system hooks */ #include "Hooks.h" #include "RtsMessages.h" +/* for StablePtr/getStablePtr/deRefStablePtr */ +#include "Storage.h" +#include "Stable.h" + #include "ieee-flpt.h" #include "Signals.h" @@ -239,4 +259,29 @@ extern void stg_exit(int n) GNU_ATTRIBUTE(__noreturn__); } #endif + +/* krc: I put this here because I don't think + it needs to be visible externally. + It used to be in StgTicky.h, but I got rid + of that. */ + +/* ----------------------------------------------------------------------------- + The StgEntCounter type - needed regardless of TICKY_TICKY + -------------------------------------------------------------------------- */ + +typedef struct _StgEntCounter { + /* krc: StgWord32, not StgWord16, in order to match the code + generator, which doesn't generate anything of that type. */ + StgWord32 registeredp; /* 0 == no, 1 == yes */ + StgWord32 arity; /* arity (static info) */ + StgWord32 stk_args; /* # of args off stack */ + /* (rest of args are in registers) */ + char *str; /* name of the thing */ + char *arg_kinds; /* info about the args types */ + StgInt entry_count; /* Trips to fast entry code */ + StgInt allocs; /* number of allocations by this fun */ + struct _StgEntCounter *link;/* link to chain them all together */ +} StgEntCounter; + + #endif /* RTS_H */