/* -----------------------------------------------------------------------------
- * $Id: PrimOps.h,v 1.13 1999/02/01 18:05:30 simonm Exp $
+ * $Id: PrimOps.h,v 1.15 1999/02/05 15:25:03 simonm Exp $
*
* Macros for primitive operations in STG-ish C code.
*
#ifdef DEBUG
#define BYTE_ARR_CTS(a) \
- ({ ASSERT((GET_INFO(a) == &ARR_WORDS_info) \
- || (GET_INFO(a) == &MUT_ARR_WORDS_info)); \
+ ({ ASSERT(GET_INFO(a) == &ARR_WORDS_info); \
REAL_BYTE_ARR_CTS(a); })
#define PTRS_ARR_CTS(a) \
({ ASSERT((GET_INFO(a) == &ARR_PTRS_info) \
EF_(mkWeakzh_fast);
EF_(finaliseWeakzh_fast);
-#define deRefWeakzh(code,val,w) \
+#define deRefWeakzh(code,val,w) \
if (((StgWeak *)w)->header.info == &WEAK_info) { \
code = 1; \
- val = ((StgWeak *)w)->value; \
+ val = (P_)((StgWeak *)w)->value; \
} else { \
code = 0; \
- val = (StgClosure *)w; \
+ val = (P_)w; \
}
#define sameWeakzh(w1,w2) ((w1)==(w2))