/* -----------------------------------------------------------------------------
- * $Id: ProfHeap.c,v 1.12 2000/04/19 12:42:48 simonmar Exp $
+ * $Id: ProfHeap.c,v 1.20 2000/12/11 12:36:59 simonmar Exp $
*
* (c) The GHC Team, 1998-2000
*
*
* -------------------------------------------------------------------------- */
+#ifdef PROFILING
typedef struct _ctr {
const char *str;
unsigned long mem_resid;
}
}
}
+#endif /* PROFILING */
/* -------------------------------------------------------------------------- */
info = get_itbl((StgClosure *)p);
switch (info->type) {
- case BCO:
- size = bco_sizeW((StgBCO *)p);
- break;
case CONSTR:
- if (((StgClosure *)p)->header.info == &DEAD_WEAK_info) {
- size = sizeofW(StgWeak);
- break;
+ if (((StgClosure *)p)->header.info == &stg_DEAD_WEAK_info
+ && !(LOOKS_LIKE_GHC_INFO(*(p + sizeW_fromITBL(info))))) {
+ size = sizeofW(StgWeak);
+ break;
}
/* else, fall through... */
+ case BCO:
case FUN:
case THUNK:
case IND_PERM: