• 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...
assembler Loading commit data...
base Loading commit data...
codegen Loading commit data...
compiler Loading commit data...
compiler-dispatcher Loading commit data...
date Loading commit data...
diagnostics Loading commit data...
execution Loading commit data...
heap Loading commit data...
interpreter Loading commit data...
libplatform Loading commit data...
logging Loading commit data...
numbers Loading commit data...
objects Loading commit data...
parser Loading commit data...
profiler Loading commit data...
regress Loading commit data...
strings Loading commit data...
tasks Loading commit data...
torque Loading commit data...
utils Loading commit data...
wasm Loading commit data...
zone Loading commit data...
BUILD.gn Loading commit data...
DEPS Loading commit data...
run-all-unittests.cc Loading commit data...
test-helpers.cc Loading commit data...
test-helpers.h Loading commit data...
test-utils.cc Loading commit data...
test-utils.h Loading commit data...
testcfg.py Loading commit data...
unittests.status Loading commit data...