• jarin's avatar
    [turbofan] Variable liveness analysis for deopt. · ca3abde2
    jarin authored
    This change introduces a liveness analyzer for local variables in frame states.
    
    The main idea is to use the AstGraphBuilder::Environment class to build the control flow graph, and record local variable loads, stores and checkpoints in the CFG basic blocks (LivenessAnalyzerBlock class).
    
    After the graph building finishes, we run a simple data flow analysis over the CFG to figure out liveness of each local variable at each checkpoint. Finally, we run a pass over all the checkpoints and replace dead local variables in the frame states with the 'undefined' value.
    
    Performance numbers for Embenchen are below.
    
    ----------- box2d.js
    Current --turbo-deoptimization: EmbenchenBox2d(RunTime): 11265 ms.
    d8-master --turbo-deoptimization: EmbenchenBox2d(RunTime): 11768 ms.
    d8-master: EmbenchenBox2d(RunTime): 10996 ms.
    ----------- bullet.js
    Current --turbo-deoptimization: EmbenchenBullet(RunTime): 17049 ms.
    d8-master --turbo-deoptimization: EmbenchenBullet(RunTime): 17384 ms.
    d8-master: EmbenchenBullet(RunTime): 16153 ms.
    ----------- copy.js
    Current --turbo-deoptimization: EmbenchenCopy(RunTime): 4877 ms.
    d8-master --turbo-deoptimization: EmbenchenCopy(RunTime): 4938 ms.
    d8-master: EmbenchenCopy(RunTime): 4940 ms.
    ----------- corrections.js
    Current --turbo-deoptimization: EmbenchenCorrections(RunTime): 7068 ms.
    d8-master --turbo-deoptimization: EmbenchenCorrections(RunTime): 6718 ms.
    d8-master: EmbenchenCorrections(RunTime): 6858 ms.
    ----------- fannkuch.js
    Current --turbo-deoptimization: EmbenchenFannkuch(RunTime): 4167 ms.
    d8-master --turbo-deoptimization: EmbenchenFannkuch(RunTime): 4608 ms.
    d8-master: EmbenchenFannkuch(RunTime): 4149 ms.
    ----------- fasta.js
    Current --turbo-deoptimization: EmbenchenFasta(RunTime): 9981 ms.
    d8-master --turbo-deoptimization: EmbenchenFasta(RunTime): 9848 ms.
    d8-master: EmbenchenFasta(RunTime): 9640 ms.
    ----------- lua_binarytrees.js
    Current --turbo-deoptimization: EmbenchenLuaBinaryTrees(RunTime): 11571 ms.
    d8-master --turbo-deoptimization: EmbenchenLuaBinaryTrees(RunTime): 13089 ms.
    d8-master: EmbenchenLuaBinaryTrees(RunTime): 10957 ms.
    ----------- memops.js
    Current --turbo-deoptimization: EmbenchenMemOps(RunTime): 7766 ms.
    d8-master --turbo-deoptimization: EmbenchenMemOps(RunTime): 7346 ms.
    d8-master: EmbenchenMemOps(RunTime): 7738 ms.
    ----------- primes.js
    Current --turbo-deoptimization: EmbenchenPrimes(RunTime): 7459 ms.
    d8-master --turbo-deoptimization: EmbenchenPrimes(RunTime): 7453 ms.
    d8-master: EmbenchenPrimes(RunTime): 7451 ms.
    ----------- skinning.js
    Current --turbo-deoptimization: EmbenchenSkinning(RunTime): 15564 ms.
    d8-master --turbo-deoptimization: EmbenchenSkinning(RunTime): 15611 ms.
    d8-master: EmbenchenSkinning(RunTime): 15583 ms.
    ----------- zlib.js
    Current --turbo-deoptimization: EmbenchenZLib(RunTime): 10825 ms.
    d8-master --turbo-deoptimization: EmbenchenZLib(RunTime): 11180 ms.
    d8-master: EmbenchenZLib(RunTime): 10823 ms.
    
    BUG=
    
    Review URL: https://codereview.chromium.org/949743002
    
    Cr-Commit-Position: refs/heads/master@{#27232}
    ca3abde2
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...
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...