• Leszek Swirski's avatar
    [runtime] Compress the off-heap string table · 279bd3e1
    Leszek Swirski authored
    Rather than an Object array, use a Tagged_t array to store the
    elements of the off-heap string table. This matches the old on-heap
    string table's behaviour, and recovers memory regressions from that
    work.
    
    To be able to do this, this also introduces a new slot type,
    OffHeapObjectSlot. This is because CompressedObjectSlot assumes that
    the slot is on-heap, and that it can mask the slot location to
    recover the isolate root. OffHeapObjectSlot doesn't define an
    operator*, and instead provides a `load(const Isolate*)` method.
    The other slots also gain this method so that they can use it in
    slot-templated functions. Also, the RootVisitor gains an
    OffHeapObjectSlot overload, which is UNREACHABLE by default and only
    needs to be defined by visitors that can access the string table.
    
    As a drive-by, fix some non-atomic accesses to the off-heap string
    table, also using the new slot.
    
    Bug: chromium:1109553
    Bug: chromium:1115116
    Bug: chromium:1115559
    Bug: chromium:1115683
    Change-Id: I819ed7bf820e9ef98ad5d5f9d0d592efbb6f5aa6
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2352489
    Commit-Queue: Leszek Swirski <leszeks@chromium.org>
    Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#69381}
    279bd3e1
compressed-slots.h 5.7 KB