+
+/* -----------------------------------------------------------------------------
+ * Debugging
+ * -------------------------------------------------------------------------- */
+
+#if DEBUG
+//@cindex printMutOnceList
+void
+printMutOnceList(generation *gen)
+{
+ StgMutClosure *p, *next;
+
+ p = gen->mut_once_list;
+ next = p->mut_link;
+
+ fprintf(stderr, "@@ Mut once list %p: ", gen->mut_once_list);
+ for (; p != END_MUT_LIST; p = next, next = p->mut_link) {
+ fprintf(stderr, "%p (%s), ",
+ p, info_type((StgClosure *)p));
+ }
+ fputc('\n', stderr);
+}
+
+//@cindex printMutableList
+void
+printMutableList(generation *gen)
+{
+ StgMutClosure *p, *next;
+
+ p = gen->mut_list;
+ next = p->mut_link;
+
+ fprintf(stderr, "@@ Mutable list %p: ", gen->mut_list);
+ for (; p != END_MUT_LIST; p = next, next = p->mut_link) {
+ fprintf(stderr, "%p (%s), ",
+ p, info_type((StgClosure *)p));
+ }
+ fputc('\n', stderr);
+}
+
+//@cindex maybeLarge
+static inline rtsBool
+maybeLarge(StgClosure *closure)
+{
+ StgInfoTable *info = get_itbl(closure);
+
+ /* closure types that may be found on the new_large_objects list;
+ see scavenge_large */
+ return (info->type == MUT_ARR_PTRS ||
+ info->type == MUT_ARR_PTRS_FROZEN ||
+ info->type == TSO ||
+ info->type == ARR_WORDS);
+}
+
+
+#endif /* DEBUG */
+
+//@node Index, , Pausing a thread
+//@subsection Index
+
+//@index
+//* GarbageCollect:: @cindex\s-+GarbageCollect
+//* MarkRoot:: @cindex\s-+MarkRoot
+//* RevertCAFs:: @cindex\s-+RevertCAFs
+//* addBlock:: @cindex\s-+addBlock
+//* cleanup_weak_ptr_list:: @cindex\s-+cleanup_weak_ptr_list
+//* copy:: @cindex\s-+copy
+//* copyPart:: @cindex\s-+copyPart
+//* evacuate:: @cindex\s-+evacuate
+//* evacuate_large:: @cindex\s-+evacuate_large
+//* gcCAFs:: @cindex\s-+gcCAFs
+//* isAlive:: @cindex\s-+isAlive
+//* maybeLarge:: @cindex\s-+maybeLarge
+//* mkMutCons:: @cindex\s-+mkMutCons
+//* printMutOnceList:: @cindex\s-+printMutOnceList
+//* printMutableList:: @cindex\s-+printMutableList
+//* relocate_TSO:: @cindex\s-+relocate_TSO
+//* scavenge:: @cindex\s-+scavenge
+//* scavenge_large:: @cindex\s-+scavenge_large
+//* scavenge_mut_once_list:: @cindex\s-+scavenge_mut_once_list
+//* scavenge_mutable_list:: @cindex\s-+scavenge_mutable_list
+//* scavenge_one:: @cindex\s-+scavenge_one
+//* scavenge_srt:: @cindex\s-+scavenge_srt
+//* scavenge_stack:: @cindex\s-+scavenge_stack
+//* scavenge_static:: @cindex\s-+scavenge_static
+//* threadLazyBlackHole:: @cindex\s-+threadLazyBlackHole
+//* threadPaused:: @cindex\s-+threadPaused
+//* threadSqueezeStack:: @cindex\s-+threadSqueezeStack
+//* traverse_weak_ptr_list:: @cindex\s-+traverse_weak_ptr_list
+//* upd_evacuee:: @cindex\s-+upd_evacuee
+//* zero_mutable_list:: @cindex\s-+zero_mutable_list
+//* zero_static_object_list:: @cindex\s-+zero_static_object_list
+//@end index