• Shu-yu Guo's avatar
    [sandbox] Make external ptr table usable under pointer compression · 2679a36e
    Shu-yu Guo authored
    This CL moves the external pointer table out of V8_ENABLE_SANDBOX and
    into V8_COMPRESS_POINTERS. The external pointer table is also useful
    even when not sandboxing external pointers to ease alignment
    requirements under pointer compression.
    
    It is onerous for the allocator to support non-tagged-size alignment.
    Under pointer compression, tagged is 4 bytes while system pointers are
    8 bytes. Because external pointer table indices are 4-bytes, fields that
    require natural alignment (e.g. the state field in JSAtomicsMutex) when
    the system pointer size is 8-bytes can use an indirection via the
    pointer table to ease the alignment restriction back to 4-bytes under
    pointer compression.
    
    Bug: v8:10391
    Change-Id: Iac1200e40c987128cd6a227cd279ba4dac0e5c56
    Cq-Include-Trybots: luci.v8.try:v8_linux64_pointer_compression_rel_ng
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3783076Reviewed-by: 's avatarSamuel Groß <saelo@chromium.org>
    Commit-Queue: Shu-yu Guo <syg@chromium.org>
    Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#81977}
    2679a36e
external-pointer-table-inl.h 6.42 KB