• 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
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.flake8 Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
INTL_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...