• Ross McIlroy's avatar
    [TurboProp] Add support for deferred block spills in fast reg alloc · 4a601911
    Ross McIlroy authored
    Adds support for avoiding spills in non-deferred blocks by instead
    restricting the spill ranges to deferred blocks if the virtual
    register is only spilled in deferred blocks.
    
    It does this by tracking registers that reach the exit point of deferred
    blocks and spilling them them pre-emptively in the deferred block while
    treating them as committed from the point of view of the non-deferred
    blocks. We also now track whether virtual registers need to be spilled
    at their SSA definition point (where they are output by an instruction),
    or can instead be spilled at the entry to deferred blocks for use as
    spill slots within those deferred blocks. In both cases, the tracking
    of these deferred spills is kept as a pending operation until the
    allocator confirms that adding these spills will avoid spills in the
    non-deferred pathways, to avoid adding unnecessary extra spills in
    deferred blocks.
    
    BUG=v8:9684
    
    Change-Id: Ib151e795567f0e4e7f95538415a8cc117d235b64
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2440603
    Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
    Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#70374}
    4a601911
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...