X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=includes%2FCmm.h;h=d47e6fdaa64bcf9d9b5e434958d7c81e81edd13e;hb=da6ece6b866451c684dd96867e32c3fcba53c248;hp=cecf92640bf807cfa8b19b5273c440ee3ed664d0;hpb=6015a94f9108a502150565577b66c23650796639;p=ghc-hetmet.git diff --git a/includes/Cmm.h b/includes/Cmm.h index cecf926..d47e6fd 100644 --- a/includes/Cmm.h +++ b/includes/Cmm.h @@ -407,9 +407,12 @@ #define BITMAP_BITS(bitmap) ((bitmap) >> BITMAP_BITS_SHIFT) /* Debugging macros */ -#define LOOKS_LIKE_INFO_PTR(p) \ - ((p) != NULL && \ - (TO_W_(%INFO_TYPE(%STD_INFO(p))) != INVALID_OBJECT) && \ +#define LOOKS_LIKE_INFO_PTR(p) \ + ((p) != NULL && \ + LOOKS_LIKE_INFO_PTR_NOT_NULL(p)) + +#define LOOKS_LIKE_INFO_PTR_NOT_NULL(p) \ + ( (TO_W_(%INFO_TYPE(%STD_INFO(p))) != INVALID_OBJECT) && \ (TO_W_(%INFO_TYPE(%STD_INFO(p))) < N_CLOSURE_TYPES)) #define LOOKS_LIKE_CLOSURE_PTR(p) (LOOKS_LIKE_INFO_PTR(GET_INFO(UNTAG(p)))) @@ -571,9 +574,13 @@ W_[free] = p; \ bdescr_free(__bd) = free + WDS(1); -#define recordMutable(p, regs) \ - W_ __p; \ - __p = p; \ - recordMutableCap(__p, TO_W_(bdescr_gen_no(Bdescr(__p))), regs) +#define recordMutable(p, regs) \ + W_ __p; \ + W_ __bd; \ + W_ __gen; \ + __p = p; \ + __bd = Bdescr(__p); \ + __gen = TO_W_(bdescr_gen_no(__bd)); \ + if (__gen > 0) { recordMutableCap(__p, __gen, regs); } #endif /* CMM_H */