• Jakob Gruber's avatar
    [isolate-data] Split builtin tables into tiers · 06af754c
    Jakob Gruber authored
    .. for more efficient access to builtins from generated code.
    
    Root-relative accesses tend to be faster and produce more compact
    code when the root-relative offset is small. IsolateData contains
    a few large tables (roots, external references, builtins), resulting
    in very large offsets in general.
    
    This CL starts by splitting the builtin table into tiers: tier 0
    is a minimal set of perf-critical builtins that should be cheap to
    access. The offset to tier 0 builtins is guaranteed to be small.
    
    The full builtin table also remains in IsolateData for occasions in
    which we need to lookup builtins by index.
    
    In future work, we can also split external references and roots into
    tiers.
    
    On x64, this reduces deopt exit sizes from 7 to 4 bytes and from 12
    to 9 bytes (dynamic map checks / EagerWithResume deopts).
    
    Bug: v8:12203,v8:8661
    Change-Id: I5a9ed22b0e00682aca1abcf15892ae1458dbdd70
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3162142
    Commit-Queue: Jakob Gruber <jgruber@chromium.org>
    Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
    Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#76947}
    06af754c
deoptimizer-x64.cc 1.93 KB