• mtrofin's avatar
    [turbofan] reduce ResolveControlFlow overhead. · 0bcfb26e
    mtrofin authored
    I found this optimization opportunity when analyzing some pathological
    compile-time examples. When tying together live ranges across control
    flow boundaries, we used to repeatedly check if the top level range was
    spilled in deferred blocks or not. This proved to be a hotspot in such
    cases (i.e. the pathological compile time ones).
    
    Because the analysis needs to progress block by block and not live range by live range, we cannot feasibly save per-range information to
    remove the hotspot. Instead, we save this information when
    constructing LiveRangeBounds.
    
    The result is 2.5 to 7% improvement in the pathological cases, and a few
    similar bonuses in perf in a couple of other benchmarks.
    
    Also, opportunistically removed the loop counting the number of child
    ranges, since we have that count from the new (post - refactoring)
    range numbering technique.
    
    BUG=
    
    Review URL: https://codereview.chromium.org/1412573009
    
    Cr-Commit-Position: refs/heads/master@{#32071}
    0bcfb26e
Name
Last commit
Last update
benchmarks Loading commit data...
build Loading commit data...
docs 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/binutils Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.gitignore Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
Makefile Loading commit data...
Makefile.android Loading commit data...
Makefile.nacl Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...