ca3abde2fa
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} |
||
---|---|---|
.. | ||
blink_tests | ||
gcmole | ||
generate_shim_headers | ||
gyp | ||
ninja | ||
oom_dump | ||
perf_tests | ||
profviz | ||
release | ||
sanitizers | ||
sodium | ||
testrunner | ||
unittests | ||
v8.xcodeproj | ||
vim | ||
visual_studio | ||
android-build.sh | ||
android-ll-prof.sh | ||
android-run.py | ||
android-sync.sh | ||
bash-completion.sh | ||
check-name-clashes.py | ||
check-static-initializers.sh | ||
codemap.js | ||
concatenate-files.py | ||
consarray.js | ||
cpu.sh | ||
cross_build_gcc.sh | ||
csvparser.js | ||
DEPS | ||
detect-builtins.js | ||
disasm.py | ||
draw_instruction_graph.sh | ||
external-reference-check.py | ||
find_depot_tools.py | ||
find-commit-for-patch.py | ||
freebsd-tick-processor | ||
fuzz-harness.sh | ||
gc-nvp-trace-processor.py | ||
gdb-v8-support.py | ||
gdbinit | ||
gen-postmortem-metadata.py | ||
generate-builtins-tests.py | ||
generate-ten-powers.scm | ||
grokdump.py | ||
js2c.py | ||
jsmin.py | ||
linux-tick-processor | ||
ll_prof.py | ||
logreader.js | ||
mac-nm | ||
mac-tick-processor | ||
mingw-generate-makefiles.sh | ||
nacl-run.py | ||
parser-shell.cc | ||
parser-shell.gyp | ||
plot-timer-events | ||
presubmit.py | ||
process-heap-prof.py | ||
profile_view.js | ||
profile.js | ||
run_perf.py | ||
run-deopt-fuzzer.py | ||
run-llprof.sh | ||
run-tests.py | ||
run-valgrind.py | ||
run.py | ||
shell-utils.h | ||
SourceMap.js | ||
splaytree.js | ||
stats-viewer.py | ||
test-server.py | ||
tick-processor.html | ||
tickprocessor-driver.js | ||
tickprocessor.js | ||
trace-maps-processor.py | ||
try_perf.py | ||
v8-info.sh | ||
v8-rolls.sh | ||
v8heapconst.py | ||
v8heapconst.py.tmpl | ||
whitespace.txt | ||
windows-tick-processor.bat |