/* -----------------------------------------------------------------------------
- * $Id: Sanity.c,v 1.5 1999/01/18 15:18:06 simonm Exp $
+ * $Id: Sanity.c,v 1.8 1999/02/02 12:37:14 simonm Exp $
*
* Sanity checking code for the heap and stack.
*
return sizeofW(StgMVar);
}
- case FUN:
case THUNK:
+ case THUNK_1_0:
+ case THUNK_0_1:
+ case THUNK_1_1:
+ case THUNK_0_2:
+ case THUNK_2_0:
+ {
+ nat i;
+ for (i = 0; i < info->layout.payload.ptrs; i++) {
+ ASSERT(LOOKS_LIKE_PTR(payloadPtr(p,i)));
+ }
+ return stg_max(sizeW_fromITBL(info), sizeofW(StgHeader) + MIN_UPD_SIZE);
+ }
+
+ case FUN:
+ case FUN_1_0:
+ case FUN_0_1:
+ case FUN_1_1:
+ case FUN_0_2:
+ case FUN_2_0:
case CONSTR:
+ case CONSTR_1_0:
+ case CONSTR_0_1:
+ case CONSTR_1_1:
+ case CONSTR_0_2:
+ case CONSTR_2_0:
case IND_PERM:
case IND_OLDGEN:
case IND_OLDGEN_PERM:
case BLACKHOLE:
case BLACKHOLE_BQ:
case FOREIGN:
+ case STABLE_NAME:
case MUT_VAR:
case CONSTR_INTLIKE:
case CONSTR_CHARLIKE:
/* This is the smallest size of closure that can live in the heap. */
ASSERT( size >= MIN_NONUPD_SIZE + sizeofW(StgHeader) );
p += size;
+
+ /* skip over slop */
while (p < bd->free &&
- *p && !LOOKS_LIKE_GHC_INFO(*p)) { p++; } /* skip over slop */
+ (*p == 0 || !LOOKS_LIKE_GHC_INFO(*p))) { p++; }
}
bd = bd->link;
if (bd != NULL) {