• jarin@chromium.org's avatar
    [turbofan] Do not use the generic graph algorithm for widening in the typer. · 2d07d762
    jarin@chromium.org authored
    This change uses an explicit queue for type-widening instead of the
    generic algorithm. The trouble with the generic algorithm was that it
    called the visitor on the same phi many times in a row (and thus caused
    unnecessary retyping). I also think that the queue-based fixpoint is
    more readable.
    
    The CL cuts running time of the nbody-java benchmark from ~19s to ~15s,
    the time spent in the typer goes from 4.5s to 1s. This is still a lot
    - the root cause appears to be slow handling of union subtyping
    (m*n for unions of sizes m and n). I see a re-typing of a
    single phi node taking > 100ms. I will work on a fix with Andreas,
    hopefully we can come up with some canonical representation
    of unions at least for the common cases (union of Smi constants).
    
    I have also changed the initial typer run to always compute a type, even
    if we already had a type for the node. This fixes one assert failure
    where context specialization updates a node without updating the type,
    which confuses the typer when widening (as some types suddenly narrow).
    
    BUG=
    R=bmeurer@chromium.org
    
    Review URL: https://codereview.chromium.org/689403002
    
    Cr-Commit-Position: refs/heads/master@{#25053}
    git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25053 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    2d07d762
Name
Last commit
Last update
benchmarks Loading commit data...
build Loading commit data...
include Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
tools Loading commit data...
.DEPS.git Loading commit data...
.clang-format Loading commit data...
.gitignore 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...