X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2FUpdates.h;h=abca78817d6b4b1cce225aeb8b3ff72e21eb1eea;hp=c8c75b130e7c232771e85aa9e71db9a74153e403;hb=143f4381d242e4a1c3174e8a0732a1e48f00a1aa;hpb=b19bcfd953fdb10059753c1270ac1e4631da0f53 diff --git a/rts/Updates.h b/rts/Updates.h index c8c75b1..abca788 100644 --- a/rts/Updates.h +++ b/rts/Updates.h @@ -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(); \