diff --git a/common/cbits/GhcDebug.cmm b/common/cbits/GhcDebug.cmm
deleted file mode 100644
index ffdc34b41e09f4b92fc8475d04df52b0472620e6..0000000000000000000000000000000000000000
--- a/common/cbits/GhcDebug.cmm
+++ /dev/null
@@ -1,69 +0,0 @@
-#include "Cmm.h"
-
-
-closureSizezh ( P_ closure )
-{
-    W_ clos;
-    clos = UNTAG(closure);
-
-    W_ len;
-    (len) = foreign "C" heap_view_closureSize(clos "ptr");
-    return (len);
-}
-
-unpackClosureDatzh ( P_ closure )
-{
-    W_ p, ptrs_arr, dat_arr;
-
-    W_ clos;
-    clos = UNTAG(closure);
-
-    W_ len;
-    (len) = foreign "C" heap_view_closureSize(clos "ptr");
-    foreign "C" printf("unpack %p %d\n", clos, len);
-
-    W_ dat_arr_sz;
-    dat_arr_sz = SIZEOF_StgArrBytes + WDS(len);
-
-    ALLOC_PRIM_N (dat_arr_sz, unpackClosureDatzh, closure);
-    foreign "C" printf("unpack(2) %p %d\n", clos, len);
-
-    dat_arr = Hp - dat_arr_sz + WDS(1);
-
-    SET_HDR(dat_arr, stg_ARR_WORDS_info, CCCS);
-    StgArrBytes_bytes(dat_arr) = WDS(len);
-    foreign "C" printf("unpack(3) %p %d\n", clos, len);
-    p = 0;
-for:
-    if(p < len) {
-         foreign "C" printf("unpack(3a) %p %d/%d %p\n", clos,p, len, clos + WDS(p));
-         W_[BYTE_ARR_CTS(dat_arr) + WDS(p)] = W_[clos + WDS(p)];
-         p = p + 1;
-
-         goto for;
-    }
-    foreign "C" printf("unpack(4) %p %d\n", clos, len);
-
-
-    return (dat_arr);
-}
-
-unpackClosureInfozh ( P_ closure )
-{
-    W_ info;
-    info = %GET_STD_INFO(UNTAG(closure));
-
-    return (info);
-}
-
-unpackClosurePtrzh ( P_ closure )
-{
-    W_ clos;
-    clos = UNTAG(closure);
-
-    W_ ptrArray;
-
-    ("ptr" ptrArray) = foreign "C" heap_view_closurePtrsAsWords(MyCapability() "ptr", clos "ptr");
-
-    return (ptrArray);
-}
diff --git a/common/cbits/Heap.c b/common/cbits/Heap.c
deleted file mode 100644
index c1c15c2c57ac1fdfff3a0df90c21a51877164ac8..0000000000000000000000000000000000000000
--- a/common/cbits/Heap.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include <Rts.h>
-#include "rts/storage/Heap.h"
-
-StgArrBytes *heap_view_closurePtrsAsWords(Capability *cap, StgClosure *closure) {
-    ASSERT(LOOKS_LIKE_CLOSURE_PTR(closure));
-
-    StgWord size = heap_view_closureSize(closure);
-
-    // First collect all pointers here, with the comfortable memory bound
-    // of the whole closure. Afterwards we know how many pointers are in
-    // the closure and then we can allocate space on the heap and copy them
-    // there
-    StgClosure *ptrs[size];
-    StgWord nptrs = collect_pointers(closure, ptrs);
-    StgArrBytes *arr =
-        (StgArrBytes *)allocate(cap, sizeofW(StgArrBytes) + nptrs);
-    TICK_ALLOC_PRIM(sizeofW(StgArrBytes), nptrs, 0);
-    SET_HDR(arr, &stg_ARR_WORDS_info, ((CapabilityPublic *)cap)->r.rCCCS);
-    arr->bytes = sizeof(StgWord) * nptrs;
-
-    for (StgWord i = 0; i<nptrs; i++) {
-        arr->payload[i] = (StgWord)ptrs[i];
-    }
-
-    return arr;
-}
diff --git a/common/ghc-debug-common.cabal b/common/ghc-debug-common.cabal
index c59a8ac0625025dfb712d54761271d088376834c..82d68eedd2438290570460caf2539c8f045968f0 100644
--- a/common/ghc-debug-common.cabal
+++ b/common/ghc-debug-common.cabal
@@ -40,8 +40,6 @@ library
                        deepseq >= 1.4
 
   hs-source-dirs:      src
-  cmm-sources:         cbits/GhcDebug.cmm
-  c-sources:           cbits/Heap.c
   ghc-options: -Wall
   default-language:    Haskell2010
   default-extensions: ApplicativeDo