diff --git a/rts/sm/Scav.c b/rts/sm/Scav.c
index a09130a0912a2112ecca2869401085aa7a1b8452..ca40a17632f5131e601b2e7e91aae238986c0225 100644
--- a/rts/sm/Scav.c
+++ b/rts/sm/Scav.c
@@ -1594,6 +1594,14 @@ scavenge_one(StgPtr p)
 #endif
       break;
 
+    case BCO: {
+        StgBCO *bco = (StgBCO *)p;
+        evacuate((StgClosure **)&bco->instrs);
+        evacuate((StgClosure **)&bco->literals);
+        evacuate((StgClosure **)&bco->ptrs);
+        break;
+    }
+
     case COMPACT_NFDATA:
         scavenge_compact((StgCompactNFData*)p);
         break;