• 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
Name
Last commit
Last update
..
api Loading commit data...
asmjs Loading commit data...
ast Loading commit data...
base Loading commit data...
builtins Loading commit data...
codegen Loading commit data...
common Loading commit data...
compiler Loading commit data...
compiler-dispatcher Loading commit data...
d8 Loading commit data...
date Loading commit data...
debug Loading commit data...
deoptimizer Loading commit data...
diagnostics Loading commit data...
execution Loading commit data...
extensions Loading commit data...
flags Loading commit data...
handles Loading commit data...
heap Loading commit data...
ic Loading commit data...
init Loading commit data...
inspector Loading commit data...
interpreter Loading commit data...
json Loading commit data...
libplatform Loading commit data...
libsampler Loading commit data...
logging Loading commit data...
numbers Loading commit data...
objects Loading commit data...
parsing Loading commit data...
profiler Loading commit data...
protobuf Loading commit data...
regexp Loading commit data...
roots Loading commit data...
runtime Loading commit data...
sanitizer Loading commit data...
snapshot Loading commit data...
strings Loading commit data...
tasks Loading commit data...
third_party Loading commit data...
torque Loading commit data...
tracing Loading commit data...
trap-handler Loading commit data...
utils Loading commit data...
wasm Loading commit data...
zone Loading commit data...
DEPS Loading commit data...
OWNERS Loading commit data...