• 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
..
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...