-//@node Blackhole Sanity, GALA table sanity, Thread Queue Sanity
-//@subsection Blackhole Sanity
+/* -----------------------------------------------------------------------------
+ Check mutable list sanity.
+ -------------------------------------------------------------------------- */
+
+void
+checkMutableList( StgMutClosure *p, nat gen )
+{
+ bdescr *bd;
+
+ for (; p != END_MUT_LIST; p = p->mut_link) {
+ bd = Bdescr((P_)p);
+ ASSERT(closure_MUTABLE(p));
+ ASSERT(bd->gen_no == gen);
+ ASSERT(LOOKS_LIKE_PTR(p->mut_link));
+ }
+}
+
+void
+checkMutOnceList( StgMutClosure *p, nat gen )
+{
+ bdescr *bd;
+ StgInfoTable *info;
+
+ for (; p != END_MUT_LIST; p = p->mut_link) {
+ bd = Bdescr((P_)p);
+ info = get_itbl(p);
+
+ ASSERT(!closure_MUTABLE(p));
+ ASSERT(ip_STATIC(info) || bd->gen_no == gen);
+ ASSERT(LOOKS_LIKE_PTR(p->mut_link));
+
+ switch (info->type) {
+ case IND_STATIC:
+ case IND_OLDGEN:
+ case IND_OLDGEN_PERM:
+ case MUT_CONS:
+ break;
+ default:
+ barf("checkMutOnceList: strange closure %p (%s)",
+ p, info_type((StgClosure *)p));
+ }
+ }
+}