Sweeping should only scribble when sweeping to free list
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 3 Aug 2017 01:57:37 +0000 (01:57 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 3 Aug 2017 01:57:37 +0000 (01:57 +0000)
commit42eb6fb2cae59f12fa7167943cabd0b0b4f6ed34
tree6e9635401dd322b3c87d0c9440a08257186b3488
parentce696b4400cc6eb50a0d5b8f69fcb19bdf85a8ed
Sweeping should only scribble when sweeping to free list
https://bugs.webkit.org/show_bug.cgi?id=175105

Reviewed by Saam Barati.

I just saw a crash on the bots where a destructor call attempt dereferenced scribbled memory. This
can happen because the bump path of specializedSweep will scribble in SweepOnly, which replaces the
zap word (i.e. 0) with the scribble word (i.e. 0xbadbeef0). This is a recent regression, since we
didn't used to do destruction on the bump path. No destruction, no zapping. Looking at the pop
path, we only scribble when we SweepToFreeList. This ensures that we only overwrite the zap word
when it doesn't matter anyway because we're building a free list.

This is a fix for those crashes on the bots because it means that we'll no longer scribble over the
zap.

* heap/MarkedBlockInlines.h:
(JSC::MarkedBlock::Handle::specializedSweep):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@220175 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/heap/MarkedBlockInlines.h