• 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
.github Loading commit data...
bazel 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...
.bazelrc Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.flake8 Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.mailmap Loading commit data...
.vpython Loading commit data...
.vpython3 Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.bazel Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS Loading commit data...
DIR_METADATA Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
INTL_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LOONG_OWNERS Loading commit data...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
RISCV_OWNERS Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
WORKSPACE Loading commit data...
codereview.settings Loading commit data...