• bmeurer's avatar
    [turbofan] Reland "Add new JSFrameSpecialization reducer." and "Perform OSR... · ef661b08
    bmeurer authored
    [turbofan] Reland "Add new JSFrameSpecialization reducer." and "Perform OSR deconstruction early and remove type propagation.".
    
    We have to reland these two commits at once, because the first breaks
    some asm.js benchmarks without the second. The change was reverted
    because of bogus checks in the verifier, which will not work in the
    presence of OSR (and where hidden because of the type back propagation
    hack in OSR so far). Original messages are below:
    
    [turbofan] Add new JSFrameSpecialization reducer.
    
    The JSFrameSpecialization specializes an OSR graph to the current
    unoptimized frame on which we will perform the on-stack replacement.
    This is used for asm.js functions, where we cannot reuse the OSR
    code object anyway because of context specialization, and so we could as
    well specialize to the max instead.
    
    It works by replacing all OsrValues in the graph with their values
    in the JavaScriptFrame.
    
    The idea is that using this trick we get better performance without
    doing the unsound backpropagation of types to OsrValues later. This
    is the first step towards fixing OSR for TurboFan.
    
    [turbofan] Perform OSR deconstruction early and remove type propagation.
    
    This way we don't have to deal with dead pre-OSR code in the graph
    and risk optimizing the wrong code, especially we don't make
    optimistic assumptions in the dead code that leaks into the OSR code
    (i.e. deopt guards are in dead code, but the types propagate to OSR
    code via the OsrValue type back propagation).
    
    BUG=v8:4273
    LOG=n
    R=jarin@chromium.org
    
    Review URL: https://codereview.chromium.org/1226673005
    
    Cr-Commit-Position: refs/heads/master@{#29486}
    ef661b08
Name
Last commit
Last update
..
blink_tests Loading commit data...
gcmole Loading commit data...
generate_shim_headers Loading commit data...
gyp Loading commit data...
ninja Loading commit data...
oom_dump Loading commit data...
perf_tests Loading commit data...
profviz Loading commit data...
release Loading commit data...
sanitizers Loading commit data...
sodium Loading commit data...
testrunner Loading commit data...
unittests Loading commit data...
v8.xcodeproj Loading commit data...
vim Loading commit data...
visual_studio Loading commit data...
DEPS Loading commit data...
OWNERS Loading commit data...
SourceMap.js Loading commit data...
android-build.sh Loading commit data...
android-ll-prof.sh Loading commit data...
android-run.py Loading commit data...
android-sync.sh Loading commit data...
bash-completion.sh Loading commit data...
check-name-clashes.py Loading commit data...
check-static-initializers.sh Loading commit data...
codemap.js Loading commit data...
compare-table-gen.js Loading commit data...
concatenate-files.py Loading commit data...
consarray.js Loading commit data...
cpu.sh Loading commit data...
cross_build_gcc.sh Loading commit data...
csvparser.js Loading commit data...
detect-builtins.js Loading commit data...
disasm.py Loading commit data...
draw_instruction_graph.sh Loading commit data...
external-reference-check.py Loading commit data...
find-commit-for-patch.py Loading commit data...
find_depot_tools.py Loading commit data...
freebsd-tick-processor Loading commit data...
fuzz-harness.sh Loading commit data...
gc-nvp-to-csv.py Loading commit data...
gc-nvp-trace-processor.py Loading commit data...
gc_nvp_common.py Loading commit data...
gdb-v8-support.py Loading commit data...
gdbinit Loading commit data...
gen-postmortem-metadata.py Loading commit data...
generate-builtins-tests.py Loading commit data...
generate-ten-powers.scm Loading commit data...
grokdump.py Loading commit data...
js2c.py Loading commit data...
jsmin.py Loading commit data...
linux-tick-processor Loading commit data...
ll_prof.py Loading commit data...
logreader.js Loading commit data...
mac-nm Loading commit data...
mac-tick-processor Loading commit data...
mingw-generate-makefiles.sh Loading commit data...
nacl-run.py Loading commit data...
parser-shell.cc Loading commit data...
parser-shell.gyp Loading commit data...
perf-to-html.py Loading commit data...
plot-timer-events Loading commit data...
presubmit.py Loading commit data...
process-heap-prof.py Loading commit data...
profile.js Loading commit data...
profile_view.js Loading commit data...
run-deopt-fuzzer.py Loading commit data...
run-llprof.sh Loading commit data...
run-tests.py Loading commit data...
run-valgrind.py Loading commit data...
run.py Loading commit data...
run_perf.py Loading commit data...
shell-utils.h Loading commit data...
splaytree.js Loading commit data...
stats-viewer.py Loading commit data...
test-server.py Loading commit data...
tick-processor.html Loading commit data...
tickprocessor-driver.js Loading commit data...
tickprocessor.js Loading commit data...
trace-maps-processor.py Loading commit data...
try_perf.py Loading commit data...
v8-info.sh Loading commit data...
v8-rolls.sh Loading commit data...
v8heapconst.py Loading commit data...
v8heapconst.py.tmpl Loading commit data...
verify_source_deps.py Loading commit data...
whitespace.txt Loading commit data...
windows-tick-processor.bat Loading commit data...