• Matt Gardner's avatar
    Reland "Optimize `in` operator" · 803ad324
    Matt Gardner authored
    The original was reverted for breaking webkit layout tests:
    https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8-Blink%20Linux%2064/30270
    
    It also caused the following clusterfuzz failures:
    
    chromium:935832
    This was a correctness bug due to not properly handling the case of arrays with prototypes other
    than Array.prototype. Accesses that were TheHole were not being handled property, both in bounds
    holes in holey arrays and out of bounds on either holey or packed arrays. Handling was incorrect
    both in access-assembler and in Turbofan.
    
    chromium:935932
    This bug was that there was no handling for Has checks on the global object. Turbofan was emitting
    code for a store (the 'else' condition on 'access_mode == AccessMode::kLoad'). It hit a DCHECK in
    debug builds but in release could show up in different places. This is the bug that caused the
    webkit layout test failure that led to the revert.
    
    Both bugs are fixed by in CL, and tests are added for those cases.
    
    Bug: v8:8733, chromium:935932, chromium:935832
    Change-Id: Iba0dfcfce6e15d2c0815a7670ece67bc13ba1925
    Reviewed-on: https://chromium-review.googlesource.com/c/1493132Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
    Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Commit-Queue: Matt Gardner <magardn@microsoft.com>
    Cr-Commit-Position: refs/heads/master@{#59958}
    803ad324
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...