Adding TcGadt.lhs
[ghc-hetmet.git] / rts / Updates.h
index c8c75b1..abca788 100644 (file)
@@ -233,6 +233,10 @@ FILL_SLOP(StgClosure *p)
     switch (inf->type) {
     case BLACKHOLE:
     case CAF_BLACKHOLE:
+       goto no_slop;
+       // we already filled in the slop when we overwrote the thunk
+       // with BLACKHOLE, and also an evacuated BLACKHOLE is only the
+       // size of an IND.
     case THUNK_SELECTOR:
        sz = sizeofW(StgSelector) - sizeofW(StgThunkHeader);
        break;
@@ -249,6 +253,8 @@ FILL_SLOP(StgClosure *p)
     for (i = 0; i < sz; i++) {
        ((StgThunk *)p)->payload[i] = 0;
     }
+no_slop:
+    ;
 }
 
 #endif /* CMINUSMINUS */
@@ -280,9 +286,7 @@ FILL_SLOP(StgClosure *p)
     prim %write_barrier() [];                                  \
     bd = Bdescr(p1);                                           \
     if (bdescr_gen_no(bd) != 0 :: CInt) {                      \
-      foreign "C" recordMutableCap(p1 "ptr",                   \
-                                  MyCapability() "ptr",        \
-                                  bdescr_gen_no(bd)) [R1];     \
+      recordMutableCap(p1, TO_W_(bdescr_gen_no(bd)), R1);      \
       SET_INFO(p1, stg_IND_OLDGEN_info);                       \
       LDV_RECORD_CREATE(p1);                                   \
       TICK_UPD_OLD_IND();                                      \