• Ulan Degenbaev's avatar
    Fix invalidation of old-to-old slots after object trimming. · 719d23c0
    Ulan Degenbaev authored
    A recorded old-to-old slot may be overwritten with a pointer to a new
    space object. If the object containing the slot is trimmed later on,
    then the mark-compactor may crash on a stale pointer to new space.
    
    This patch ensures that:
    1) On trimming of an object we add it to the invalidated_slots sets.
    2) The InvalidatedSlotsFilter::IsValid returns false for slots outside
       the invalidated object unless the page was already swept.
    
    Array left-trimming is handled as a special case because object start
    moves and cannot be added to the invalidated set. Instead, we clear
    the freed memory so that the recorded slots contain Smi values.
    
    Bug: chromium:870226,chromium:816426
    Change-Id: Iffc05a58fcf52ece45fdb085b5d1fd4b3acb5d53
    Reviewed-on: https://chromium-review.googlesource.com/1163784
    Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
    Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
    Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#54953}
    719d23c0
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.editorconfig Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...