• Georgia Kouveli's avatar
    [arm64] Reduce code size of deoptimization exits · 207d6b35
    Georgia Kouveli authored
    Do not pass the deoptimization index in a register, instead infer it
    from the address we made the deoptimization call from. This makes the
    deoptimization exit sequence one instruction long instead of two.
    
    This requires emitting all deoptimization exits at the end of the
    function in a contiguous block, making sure no constant or veneer
    pools are emitted in between. This means that soft deoptimizations
    require an additional branch to the end of the function, which
    counteracts the removal of the move instruction, however soft
    deoptimizations are rare compared to eager and lazy ones.
    
    This reduces the code size of optimised functions for benchmarks like
    Octane and ARES-6 by about 4%.
    
    Change-Id: I771f9104a07de7931a4bb9c5836e25fb55b1a2a4
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1714876
    Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com>
    Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
    Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#62991}
    207d6b35
Name
Last commit
Last update
..
arm Loading commit data...
arm64 Loading commit data...
ia32 Loading commit data...
mips Loading commit data...
mips64 Loading commit data...
ppc Loading commit data...
s390 Loading commit data...
x64 Loading commit data...
OWNERS Loading commit data...
code-generator-impl.h Loading commit data...
code-generator.cc Loading commit data...
code-generator.h Loading commit data...
frame-elider.cc Loading commit data...
frame-elider.h Loading commit data...
gap-resolver.cc Loading commit data...
gap-resolver.h Loading commit data...
instruction-codes.h Loading commit data...
instruction-scheduler.cc Loading commit data...
instruction-scheduler.h Loading commit data...
instruction-selector-impl.h Loading commit data...
instruction-selector.cc Loading commit data...
instruction-selector.h Loading commit data...
instruction.cc Loading commit data...
instruction.h Loading commit data...
jump-threading.cc Loading commit data...
jump-threading.h Loading commit data...
live-range-separator.cc Loading commit data...
live-range-separator.h Loading commit data...
move-optimizer.cc Loading commit data...
move-optimizer.h Loading commit data...
register-allocator-verifier.cc Loading commit data...
register-allocator-verifier.h Loading commit data...
register-allocator.cc Loading commit data...
register-allocator.h Loading commit data...
unwinding-info-writer.h Loading commit data...