diff --git a/rts/sm/NonMoving.c b/rts/sm/NonMoving.c
index 31a1d22a16c0dc42d06df488d1ff651fb2a3f13e..05fa902c89ae67797462e70bb546aad51d35dbd9 100644
--- a/rts/sm/NonMoving.c
+++ b/rts/sm/NonMoving.c
@@ -1207,131 +1207,6 @@ void nonmovingPrintSegment(struct NonmovingSegment *seg)
     debugBelch("End of segment\n\n");
 }
 
-void locate_object(P_ obj)
-{
-    // Search allocators
-    for (int alloca_idx = 0; alloca_idx < NONMOVING_ALLOCA_CNT; ++alloca_idx) {
-        struct NonmovingAllocator *alloca = &nonmovingHeap.allocators[alloca_idx];
-        for (uint32_t cap_n = 0; cap_n < getNumCapabilities(); ++cap_n) {
-            Capability *cap = getCapability(cap_n);
-            struct NonmovingSegment *seg = cap->current_segments[alloca_idx];
-            if (obj >= (P_)seg && obj < (((P_)seg) + NONMOVING_SEGMENT_SIZE_W)) {
-                debugBelch("%p is in current segment of capability %d of allocator %d at %p\n", obj, cap_n, alloca_idx, (void*)seg);
-                return;
-            }
-        }
-        int seg_idx = 0;
-        struct NonmovingSegment *seg = alloca->active;
-        while (seg) {
-            if (obj >= (P_)seg && obj < (((P_)seg) + NONMOVING_SEGMENT_SIZE_W)) {
-                debugBelch("%p is in active segment %d of allocator %d at %p\n", obj, seg_idx, alloca_idx, (void*)seg);
-                return;
-            }
-            seg_idx++;
-            seg = seg->link;
-        }
-
-        seg_idx = 0;
-        seg = alloca->filled;
-        while (seg) {
-            if (obj >= (P_)seg && obj < (((P_)seg) + NONMOVING_SEGMENT_SIZE_W)) {
-                debugBelch("%p is in filled segment %d of allocator %d at %p\n", obj, seg_idx, alloca_idx, (void*)seg);
-                return;
-            }
-            seg_idx++;
-            seg = seg->link;
-        }
-    }
-
-    struct NonmovingSegment *seg = nonmovingHeap.free;
-    int seg_idx = 0;
-    while (seg) {
-        if (obj >= (P_)seg && obj < (((P_)seg) + NONMOVING_SEGMENT_SIZE_W)) {
-            debugBelch("%p is in free segment %d at %p\n", obj, seg_idx, (void*)seg);
-            return;
-        }
-        seg_idx++;
-        seg = seg->link;
-    }
-
-    // Search nurseries
-    for (uint32_t nursery_idx = 0; nursery_idx < n_nurseries; ++nursery_idx) {
-        for (bdescr* nursery_block = nurseries[nursery_idx].blocks; nursery_block; nursery_block = nursery_block->link) {
-            if (obj >= nursery_block->start && obj <= nursery_block->start + nursery_block->blocks*BLOCK_SIZE_W) {
-                debugBelch("%p is in nursery %d\n", obj, nursery_idx);
-                return;
-            }
-        }
-    }
-
-    // Search generations
-    for (uint32_t g = 0; g < RtsFlags.GcFlags.generations - 1; ++g) {
-        generation *gen = &generations[g];
-        for (bdescr *blk = gen->blocks; blk; blk = blk->link) {
-            if (obj >= blk->start && obj < blk->free) {
-                debugBelch("%p is in generation %" FMT_Word32 " blocks\n", obj, g);
-                return;
-            }
-        }
-        for (bdescr *blk = gen->old_blocks; blk; blk = blk->link) {
-            if (obj >= blk->start && obj < blk->free) {
-                debugBelch("%p is in generation %" FMT_Word32 " old blocks\n", obj, g);
-                return;
-            }
-        }
-    }
-
-    // Search large objects
-    for (uint32_t g = 0; g < RtsFlags.GcFlags.generations - 1; ++g) {
-        generation *gen = &generations[g];
-        for (bdescr *large_block = gen->large_objects; large_block; large_block = large_block->link) {
-            if ((P_)large_block->start == obj) {
-                debugBelch("%p is in large blocks of generation %d\n", obj, g);
-                return;
-            }
-        }
-    }
-
-    for (bdescr *large_block = nonmoving_large_objects; large_block; large_block = large_block->link) {
-        if ((P_)large_block->start == obj) {
-            debugBelch("%p is in nonmoving_large_objects\n", obj);
-            return;
-        }
-    }
-
-    for (bdescr *large_block = nonmoving_marked_large_objects; large_block; large_block = large_block->link) {
-        if ((P_)large_block->start == obj) {
-            debugBelch("%p is in nonmoving_marked_large_objects\n", obj);
-            return;
-        }
-    }
-
-    // Search workspaces FIXME only works in non-threaded runtime
-#if !defined(THREADED_RTS)
-    for (uint32_t g = 0; g < RtsFlags.GcFlags.generations - 1; ++ g) {
-        gen_workspace *ws = &gct->gens[g];
-        for (bdescr *blk = ws->todo_bd; blk; blk = blk->link) {
-            if (obj >= blk->start && obj < blk->free) {
-                debugBelch("%p is in generation %" FMT_Word32 " todo bds\n", obj, g);
-                return;
-            }
-        }
-        for (bdescr *blk = ws->scavd_list; blk; blk = blk->link) {
-            if (obj >= blk->start && obj < blk->free) {
-                debugBelch("%p is in generation %" FMT_Word32 " scavd bds\n", obj, g);
-                return;
-            }
-        }
-        for (bdescr *blk = ws->todo_large_objects; blk; blk = blk->link) {
-            if (obj >= blk->start && obj < blk->free) {
-                debugBelch("%p is in generation %" FMT_Word32 " todo large bds\n", obj, g);
-                return;
-            }
-        }
-    }
-#endif
-}
-
 void nonmovingPrintSweepList(void)
 {
     debugBelch("==== SWEEP LIST =====\n");
@@ -1342,37 +1217,4 @@ void nonmovingPrintSweepList(void)
     debugBelch("= END OF SWEEP LIST =\n");
 }
 
-void check_in_mut_list(StgClosure *p)
-{
-    for (uint32_t cap_n = 0; cap_n < getNumCapabilities(); ++cap_n) {
-        for (bdescr *bd = getCapability(cap_n)->mut_lists[oldest_gen->no]; bd; bd = bd->link) {
-            for (StgPtr q = bd->start; q < bd->free; ++q) {
-                if (*((StgPtr**)q) == (StgPtr*)p) {
-                    debugBelch("Object is in mut list of cap %d: %p\n", cap_n, getCapability(cap_n)->mut_lists[oldest_gen->no]);
-                    return;
-                }
-            }
-        }
-    }
-
-    debugBelch("Object is not in a mut list\n");
-}
-
-void print_block_list(bdescr* bd)
-{
-    while (bd) {
-        debugBelch("%p, ", (void*)bd);
-        bd = bd->link;
-    }
-    debugBelch("\n");
-}
-
-void print_thread_list(StgTSO* tso)
-{
-    while (tso != END_TSO_QUEUE) {
-        printClosure((StgClosure*)tso);
-        tso = tso->global_link;
-    }
-}
-
 #endif