X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=includes%2FCmm.h;h=6abe760be5adbca8c98249beb61106a04462b01b;hb=470d52df0101a2f3c528b35e046ef9814ae6e5a5;hp=52b5bec415e217a57652f8d0c5ec23b05e33443d;hpb=c93bd73f12d7036d297d00fc4082699f568c7d43;p=ghc-hetmet.git diff --git a/includes/Cmm.h b/includes/Cmm.h index 52b5bec..6abe760 100644 --- a/includes/Cmm.h +++ b/includes/Cmm.h @@ -413,6 +413,9 @@ /* The offset of the payload of an array */ #define BYTE_ARR_CTS(arr) ((arr) + SIZEOF_StgArrWords) +/* The number of words allocated in an array payload */ +#define BYTE_ARR_WDS(arr) ROUNDUP_BYTES_TO_WDS(StgArrWords_bytes(arr)) + /* Getting/setting the info pointer of a closure */ #define SET_INFO(p,info) StgHeader_info(p) = info #define GET_INFO(p) StgHeader_info(p) @@ -464,6 +467,12 @@ #define mutArrPtrsCardWords(n) \ ROUNDUP_BYTES_TO_WDS(((n) + (1 << MUT_ARR_PTRS_CARD_BITS) - 1) >> MUT_ARR_PTRS_CARD_BITS) +#if defined(PROFILING) || (!defined(THREADED_RTS) && defined(DEBUG)) +#define OVERWRITING_CLOSURE(c) foreign "C" overwritingClosure(c "ptr") +#else +#define OVERWRITING_CLOSURE(c) /* nothing */ +#endif + /* ----------------------------------------------------------------------------- Voluntary Yields/Blocks