• Samuel Groß's avatar
    ArrayBuffer refactoring in preparation for CagedPointers · 6e68daf7
    Samuel Groß authored
    The main changes of this CL are:
    
    It should no longer be assumed that an empty ArrayBuffer has a nullptr
    backing store. This is in preparation for the move to caged pointers,
    which cannot represent nullptr, and will instead likely provide a
    EmptyBackingStore constant pointing inside the virtual memory cage. For
    that reason, a new JSArrayBuffer::IsEmpty() helper is introduced, which
    should be used instead of checking against nullptr.
    
    CodeStubAssembler::GetTypedArrayBuffer now checks for on-heap
    TypedArrays instead of comparing the backing store pointer to nullptr.
    This is consistent with the implementation in JSTypedArray::GetBuffer.
    
    v8::ArrayBufferView::CopyContents now uses JSTypedArray::DataPtr instead
    of relying on nullptr backing stores to handle on-heap TypedArrays.
    
    The serializer and deserializer now check for IsEmpty() and use the
    kEmptyBackingStoreRefSentinel value to serialize empty backing stores.
    
    Empty ArrayBuffers allocated for on-heap TypedArrays now have a
    byte_length of zero. This allows removing the allocation_length() (and
    allocation_buffer()) methods, which were only (incorrectly, as they
    don't account for GSABs) used for memory measurements.
    
    Bug: chromium:1218005
    Change-Id: Ib889ccf855f68525f7a614f3963e46ea56865fa3
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3297709Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
    Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
    Commit-Queue: Samuel Groß <saelo@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#78069}
    6e68daf7
Name
Last commit
Last update
..
benchmarks Loading commit data...
bigint Loading commit data...
cctest Loading commit data...
common Loading commit data...
debugger Loading commit data...
debugging Loading commit data...
fuzzer Loading commit data...
fuzzilli Loading commit data...
inspector Loading commit data...
intl Loading commit data...
js-perf-test Loading commit data...
memory Loading commit data...
message Loading commit data...
mjsunit Loading commit data...
mkgrokdump Loading commit data...
mozilla Loading commit data...
test262 Loading commit data...
torque Loading commit data...
unittests Loading commit data...
wasm-api-tests Loading commit data...
wasm-js Loading commit data...
wasm-spec-tests Loading commit data...
webkit Loading commit data...
BUILD.gn Loading commit data...
OWNERS Loading commit data...