v8/tools
jarin ca3abde2fa [turbofan] Variable liveness analysis for deopt.
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}
2015-03-17 09:38:43 +00:00
..
blink_tests
gcmole Make gcmole execute in parallel. 2015-02-18 15:35:34 +00:00
generate_shim_headers
gyp [turbofan] Variable liveness analysis for deopt. 2015-03-17 09:38:43 +00:00
ninja [ycm] The YouCompleteMe configuration is not VIM specific. 2015-02-12 07:21:13 +00:00
oom_dump
perf_tests
profviz
release Make release scripts even more robust. 2015-03-14 02:04:48 +00:00
sanitizers Add link to tsan bug to suppression 2014-10-09 09:51:21 +00:00
sodium
testrunner introduce android_x64 build target 2015-03-09 03:23:12 +00:00
unittests Make perf test runner more robust. 2014-12-21 10:25:32 +00:00
v8.xcodeproj
vim [ycm] The YouCompleteMe configuration is not VIM specific. 2015-02-12 07:21:13 +00:00
visual_studio
android-build.sh
android-ll-prof.sh
android-run.py
android-sync.sh Copy unittests binary in android-sync.sh 2014-11-18 18:36:57 +00:00
bash-completion.sh
check-name-clashes.py Remove BLACKLIST from check-name-clashes.py, it's wrong nowadays. 2015-03-16 13:08:49 +00:00
check-static-initializers.sh
codemap.js Tick processor: Print C++ entry points 2014-10-17 15:44:02 +00:00
concatenate-files.py
consarray.js
cpu.sh Reactivate all the cores in cpu.sh. 2015-03-12 18:01:58 +00:00
cross_build_gcc.sh
csvparser.js
DEPS
detect-builtins.js Add a script that can generate simple test cases for user-exposed JS builtins 2014-09-11 09:58:58 +00:00
disasm.py
draw_instruction_graph.sh
external-reference-check.py
find_depot_tools.py Prototype for a client-side performance trybot script. 2014-11-18 14:40:00 +00:00
find-commit-for-patch.py Add tools/find-commit-for-patch.py 2014-12-16 14:25:00 +00:00
freebsd-tick-processor
fuzz-harness.sh
gc-nvp-trace-processor.py
gdb-v8-support.py
gdbinit Fix "jst" GDB macro 2014-10-24 15:04:08 +00:00
gen-postmortem-metadata.py tools: fix postmortem generator 2015-02-02 21:21:54 +00:00
generate-builtins-tests.py Add a script that can generate simple test cases for user-exposed JS builtins 2014-09-11 09:58:58 +00:00
generate-ten-powers.scm
grokdump.py Minor tools/grokdump improvements: avoid some None dereferences and add some line breaks to generated html pages. 2015-02-19 14:36:24 +00:00
js2c.py Cleanup: Remove NativesCollection<.>::*Raw* methods. 2014-12-04 18:51:22 +00:00
jsmin.py
linux-tick-processor
ll_prof.py Fix ll_prof.py for static binaries. 2015-03-16 11:34:52 +00:00
logreader.js Profiler improvements 2015-01-20 16:06:09 +00:00
mac-nm
mac-tick-processor
mingw-generate-makefiles.sh
nacl-run.py Use the pnacl-clang toolchain for (P)NaCL builds 2014-10-06 08:10:50 +00:00
parser-shell.cc Remove funky 2-stage initialization of ParserInfo and an adventurous memset. 2015-03-12 11:46:32 +00:00
parser-shell.gyp Remove deprecated lexer-shell. 2014-10-23 11:42:30 +00:00
plot-timer-events
presubmit.py Check author of a CL against the AUTHORS file. 2015-01-15 13:10:09 +00:00
process-heap-prof.py
profile_view.js
profile.js Profiler improvements 2015-01-20 16:06:09 +00:00
run_perf.py introduce android_x64 build target 2015-03-09 03:23:12 +00:00
run-deopt-fuzzer.py Contribution of PowerPC port (continuation of 422063005) - AIX Common1 2015-01-30 08:02:08 +00:00
run-llprof.sh Fix tools/run-llprof.sh to work with newer perf. 2014-10-09 06:01:41 +00:00
run-tests.py introduce android_x64 build target 2015-03-09 03:23:12 +00:00
run-valgrind.py
run.py
shell-utils.h Remove deprecated lexer-shell. 2014-10-23 11:42:30 +00:00
SourceMap.js
splaytree.js
stats-viewer.py
test-server.py
tick-processor.html
tickprocessor-driver.js Profiler improvements 2015-01-20 16:06:09 +00:00
tickprocessor.js Profiler improvements 2015-01-20 16:06:09 +00:00
trace-maps-processor.py Add FLAG_trace_maps 2014-11-07 16:03:44 +00:00
try_perf.py Prototype for a client-side performance trybot script. 2014-11-18 14:40:00 +00:00
v8-info.sh Add public version macros. 2015-02-26 08:59:23 +00:00
v8-rolls.sh
v8heapconst.py remove undetectable strings 2015-02-11 09:28:12 +00:00
v8heapconst.py.tmpl
whitespace.txt Whitespace change for updating perf shards (2) 2015-03-14 17:12:57 +00:00
windows-tick-processor.bat