• Benedikt Meurer's avatar
    [typedarray] Make JSTypedArray::length authoritative. · ad44c258
    Benedikt Meurer authored
    This is the first step towards full huge typed array support in V8.
    Before this change, the JSTypedArray::length and the elements backing
    store length (FixedTypedArrayBase::length) were used more or less
    interchangeably to determine the number of elements in a JSTypedArray.
    
    With this change we disentangle these two lengths, and instead make
    JSTypedArray::length authoritative. For on-heap typed arrays, the
    FixedTypedArrayBase::length will remain the number of elements in the
    backing store, but for the off-heap typed arrays, this length will be
    set to 0 (matching the fact that the FixedTypedArrayBase instance does
    not contain any elements itself).
    
    This also unifies the JSTypedArray::set_/length() and length_value()
    methods to only have JSTypedArray::set_/length() which returns/takes
    size_t values. Currently this still requires the values to be in Smi
    range, but later we will extend this to allow arbitrary size_t values
    (in the safe integer range).
    
    Bug: v8:4153, v8:7881
    Change-Id: Iff9089130bb31fa9e08e0cf913e7ab52c3dbf107
    Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
    Doc: http://doc/1Z-wM2qwvAuxH46e9ivtkYvKzzwYZg8ymm0x0wJaomow
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1543729
    Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
    Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
    Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
    Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#60648}
    ad44c258
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...