• Ross McIlroy's avatar
    [Runtime] Ensure template objects are retained if bytecode is flushed. · ec9aef3d
    Ross McIlroy authored
    Template objects should be cached after they are first created and reused on
    subsiquent calls to tag functions. Currently these cached objects are stored
    on the feedback vector, which has appropriate lifetime, however with bytecode
    flushing the feedback vector could be cleared when the bytecode is flushed,
    causing the template object to be dropped.
    
    In order to retain the cached template objects in the face of bytecode flushing,
    this CL adds a weakmap for each native context that is (weakly) keyed by
    shared function info, and holds a linked list of cached template objects
    associated with that shared function info, indexed by feedback vector slot id.
    Misses will check this weakmap, and if no entry is found, a new template object
    is created and added into this weakmap alongside the feedback vector.
    
    BUG=v8:8799,v8:8799,v8:8395
    
    Change-Id: Ia95d5cfc394ce58dc9fe6a1e49780f05299acc17
    Reviewed-on: https://chromium-review.googlesource.com/c/1477746
    Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
    Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#59818}
    ec9aef3d
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...