diff options
Diffstat (limited to 'rts/Apply.cmm')
-rw-r--r-- | rts/Apply.cmm | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/rts/Apply.cmm b/rts/Apply.cmm index ffcd0352a1..40f890d342 100644 --- a/rts/Apply.cmm +++ b/rts/Apply.cmm @@ -537,7 +537,7 @@ now have, │ etc. │ Now consider what happens when TSO 1 runs its duplicate-computation check. -Again, we start walking the stack from the top, where we we find the update +Again, we start walking the stack from the top, where we find the update frame updating THUNK A. We will lock this thunk, replacing it with a BLACKHOLE owned by its TSO. We now have, @@ -679,6 +679,11 @@ for: R1 = StgAP_STACK_fun(ap); + // Because of eager blackholing the closure no longer has correct size so + // threadPaused() can't correctly zero the slop, so we do it here. See #15571 + // and Note [zeroing slop]. + OVERWRITING_CLOSURE_SIZE(ap, BYTES_TO_WDS(SIZEOF_StgThunkHeader) + 2 + Words); + ENTER_R1(); } |