diff options
author | Simon Marlow <simonmar@microsoft.com> | 2006-08-30 08:33:11 +0000 |
---|---|---|
committer | Simon Marlow <simonmar@microsoft.com> | 2006-08-30 08:33:11 +0000 |
commit | 6f4b74278025a9b8061df721ab4769ae2ea8f2ff (patch) | |
tree | 895c024f80ea612dd8bae885352c2705b7b8bbd2 /rts/Updates.h | |
parent | 8edc7cea056b3de64508d700c1ace9965589a26e (diff) | |
download | haskell-6f4b74278025a9b8061df721ab4769ae2ea8f2ff.tar.gz |
FILL_SLOP: don't fill slop for BLACKHOLE/CAF_BLACKHOLE
This affects -debug only, avoids crash with test conc012.
Diffstat (limited to 'rts/Updates.h')
-rw-r--r-- | rts/Updates.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/rts/Updates.h b/rts/Updates.h index 2456f12b58..abca78817d 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 */ |