• Ulan Degenbaev's avatar
    [heap] Optimize marking of descriptor arrays. · 0400fc20
    Ulan Degenbaev authored
    Now a descriptor array tracks the number of descriptors that were
    already marked. The marking visitor of a map only marks the subset
    of the descriptors that it needs and that are not already marked.
    
    If a descriptor array is shared between M maps and has N descriptos,
    then the number of marking operations is reduced from O(M*N) to O(N).
    
    This patch also adds a marking barrier for descriptors.
    
    The marked descriptor counter in a descriptor array is not cleared
    after mark-compact GC. Instead, it embeds two bits from the global
    mark-compact epoch counter and is considered 0 if the bits do not match
    the current value of the global epoch counter.
    
    Bug: v8:8486
    Change-Id: I2a7822a6833f3143e1d351e5e4819c2ef2c07fb0
    Reviewed-on: https://chromium-review.googlesource.com/c/1382746
    Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
    Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#58372}
    0400fc20
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...
.clang-tidy 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...