• Dominik Inführ's avatar
    [heap] Only mark object immediately when invalidating slots · e0fa7164
    Dominik Inführ authored
    We use the invalidate_recorded_slots argument to signal to NotifyObjectLayoutChange whether a particular object layout change
    could cause a tagged pointer to be replaced with an untagged value.
    In such cases we need our snapshot protocol in order to allow marking
    such objects concurrently.
    
    The snapshot protocol consists of two main operations:
      1) Tracing and marking the object black on the main thread before
         performing the unsafe transition.
      2) The concurrent marker needs to read such objects into a buffer
         first and is only allowed to trace it when successfully marking
         that object black.
    
    However, in some cases we were still doing 1) on the main thread when
    the concurrent marker didn't use 2) the snapshot buffer anymore. This
    CL cleans up this behavior and ensures that 1) and 2) are always paired
    together.
    
    Bug: v8:12578
    Change-Id: Id83b3de866a80efedf4a72e440cbc767fe3eaea6
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3644611Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#80511}
    e0fa7164
Name
Last commit
Last update
.github Loading commit data...
bazel 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...
.bazelrc Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.flake8 Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.mailmap Loading commit data...
.style.yapf Loading commit data...
.vpython Loading commit data...
.vpython3 Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.bazel Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS Loading commit data...
DIR_METADATA Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
INTL_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LOONG_OWNERS Loading commit data...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
RISCV_OWNERS Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
WORKSPACE Loading commit data...
codereview.settings Loading commit data...