• 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
..
embedded Loading commit data...
DEPS Loading commit data...
DIR_METADATA Loading commit data...
OWNERS Loading commit data...
code-serializer.cc Loading commit data...
code-serializer.h Loading commit data...
context-deserializer.cc Loading commit data...
context-deserializer.h Loading commit data...
context-serializer.cc Loading commit data...
context-serializer.h Loading commit data...
deserializer.cc Loading commit data...
deserializer.h Loading commit data...
mksnapshot.cc Loading commit data...
object-deserializer.cc Loading commit data...
object-deserializer.h Loading commit data...
read-only-deserializer.cc Loading commit data...
read-only-deserializer.h Loading commit data...
read-only-serializer.cc Loading commit data...
read-only-serializer.h Loading commit data...
references.h Loading commit data...
roots-serializer.cc Loading commit data...
roots-serializer.h Loading commit data...
serializer-deserializer.cc Loading commit data...
serializer-deserializer.h Loading commit data...
serializer-inl.h Loading commit data...
serializer.cc Loading commit data...
serializer.h Loading commit data...
shared-heap-deserializer.cc Loading commit data...
shared-heap-deserializer.h Loading commit data...
shared-heap-serializer.cc Loading commit data...
shared-heap-serializer.h Loading commit data...
snapshot-compression.cc Loading commit data...
snapshot-compression.h Loading commit data...
snapshot-data.cc Loading commit data...
snapshot-data.h Loading commit data...
snapshot-empty.cc Loading commit data...
snapshot-external.cc Loading commit data...
snapshot-source-sink.cc Loading commit data...
snapshot-source-sink.h Loading commit data...
snapshot-utils.cc Loading commit data...
snapshot-utils.h Loading commit data...
snapshot.cc Loading commit data...
snapshot.h Loading commit data...
startup-deserializer.cc Loading commit data...
startup-deserializer.h Loading commit data...
startup-serializer.cc Loading commit data...
startup-serializer.h Loading commit data...