summaryrefslogtreecommitdiff
path: root/rts/Updates.h
diff options
context:
space:
mode:
authorSimon Marlow <simonmar@microsoft.com>2006-08-30 08:33:11 +0000
committerSimon Marlow <simonmar@microsoft.com>2006-08-30 08:33:11 +0000
commit6f4b74278025a9b8061df721ab4769ae2ea8f2ff (patch)
tree895c024f80ea612dd8bae885352c2705b7b8bbd2 /rts/Updates.h
parent8edc7cea056b3de64508d700c1ace9965589a26e (diff)
downloadhaskell-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.h6
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 */