• Caitlin Potter's avatar
    [runtime] perform type conversion earlier in IntegerIndexedElementSet · 6c585ef0
    Caitlin Potter authored
    When storing an indexed property in a typed array, it's necessary to
    convert the value to a Number (or to a Bigint) before performing the
    bounds check, per
    https://tc39.github.io/ecma262/#sec-integerindexedelementset.
    
    This CL adds appropriate type conversions in
    Object::SetPropertyInternal (which technically is reached after the
    bounds check has already occurred, but this isn't observable yet ---
    In the future, once OOB accesses on TypedArrays actually throw, this
    will need to be refactored again), and in StoreFastElementStub, and
    ElementsTransitionAndStoreStub (via CSA::EmitElementStore).
    
    The change was not necessary in TurboFan, as
    JSNativeContextSpecialization already performs the value conversion
    before the boundscheck.
    
    The result is some fixed test262 tests, and some new test coverage
    for this behaviour in mjsunit.
    
    BUG=v8:7896, v8:5327
    R=neis@chromium.org, jkummerow@chromium.org, gsathya@chromium.org
    
    Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
    Change-Id: Ibe6bec24c72ef6a4fd3e77d5bcafa03737f4c5e3
    Reviewed-on: https://chromium-review.googlesource.com/1117372
    Commit-Queue: Caitlin Potter <caitp@igalia.com>
    Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
    Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#54096}
    6c585ef0
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...
.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...