• Benedikt Meurer's avatar
    [turbofan] Fix CanTreatHoleAsUndefined check. · e1e35df3
    Benedikt Meurer authored
    The test for CanTreatHoleAsUndefined on keyed element access was
    checking for stability of Object.prototype and Array.prototype and
    even adding stability dependencies on both, which is too restrictive
    and leads to unnecessary deoptimizations (and might disable further
    optimization of the keyed access depending on the state of the
    prototype objects during optimization). This was not intended and
    is considered a (performance) bug.
    
    Instead use the correct approach of checking whether the receiver's
    prototype is one of the current Object.prototype or Array.prototype
    objects (since the Array protector works isolate-wide), and then
    check the Array protector and install an appropriate code dependency
    on the protector only.
    
    Bug: v8:6607
    Change-Id: I0bcfe32813ca3693e7b22de31b03edb3509d0a27
    Reviewed-on: https://chromium-review.googlesource.com/574849Reviewed-by: 's avatarDaniel Clifford <danno@chromium.org>
    Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#46743}
    e1e35df3
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
docs Loading commit data...
gni Loading commit data...
gypfiles 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...
.gitignore Loading commit data...
.gn 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...
Makefile Loading commit data...
Makefile.android 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...