• Peter Marshall's avatar
    Reland "[typedarray] Make JSTypedArray::length authoritative." · 330e5ba2
    Peter Marshall authored
    This is a reland of ad44c258
    
    Patchset 2 is the original CL
    Patchset 3 fixes some misuses of FixedArrayBase::length() and adds some
    DCHECKS to flush out any more misuses.
    Patchset 4 adds the PPC/S390 port by miladfar@ca.ibm.com.
    
    Original change's description:
    > [typedarray] Make JSTypedArray::length authoritative.
    >
    > 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: Peter Marshall <petermarshall@chromium.org>
    > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
    > Reviewed-by: Ben Titzer <titzer@chromium.org>
    > Reviewed-by: Hannes Payer <hpayer@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#60648}
    
    Bug: v8:4153, v8:7881, v8:9105
    Change-Id: Ic38f833071a723642ebc6f82a4012dbc0878ef98
    Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1594435Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
    Commit-Queue: Peter Marshall <petermarshall@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#61275}
    330e5ba2
js-heap-broker.cc 124 KB