• 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
objects.cc 312 KB