• Mike Stanton's avatar
    [Turbofan] Fix incorrect liveness in VisitThrow · 44d71893
    Mike Stanton authored
    While investigating loop peeling, I found that relatively simple code
    like "if (x) { throw new Error('oh hai'); }" in a loop would fail to
    peel. The reason is that the call (new Error(...)) was recorded by
    loop analysis as being inside the loop but the only usage was in the throw,
    which we currently model as being outside of the loop.
    
    We have a regime that inserts LoopExit nodes to mark control exits from
    the loops, and LoopExitValues that are meant to mark exiting values.
    This wasn't done because of a bug in the bytecode graph builder
    VisitThrow() method -- it used the *out* liveness to construct the
    appropriate loop exit nodes, and it's more appropriate to use the *in*
    liveness.
    
    This addressed the concern. It doesn't fix bug 7099, but is a step on the
    way.
    
    Bug: v8:7099
    Change-Id: Iaeea794843166063a55c6917e7b0ad4341581261
    Reviewed-on: https://chromium-review.googlesource.com/793834Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
    Commit-Queue: Michael Stanton <mvstanton@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#49690}
    44d71893
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
docs Loading commit data...
gni Loading commit data...
gypfiles 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...
.editorconfig Loading commit data...
.git-blame-ignore-revs 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...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm 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...
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...