• mlippautz's avatar
    [heap] Parallel newspace evacuation, semispace copy, and compaction \o/ · 8f0fd8c0
    mlippautz authored
    All parallelism can be turned off using --predictable, or --noparallel-compaction.
    
    This patch completely parallelizes
     - semispace copy: from space -> to space (within newspace)
     - newspace evacuation: newspace -> oldspace
     - oldspace compaction: oldspace -> oldspace
    
    Previously newspace has been handled sequentially (semispace copy, newspace
    evacuation) before compacting oldspace in parallel. However, on a high level
    there are no dependencies between those two actions, hence we parallelize them
    altogether. We base the number of evacuation tasks on the overall set of
    to-be-processed pages (newspace + oldspace compaction pages).
    
    Some low-level details:
     - The hard cap on number of tasks has been lifted
     - We cache store buffer entries locally before merging them back into the global
       StoreBuffer in a finalization phase.
     - We cache AllocationSite operations locally before merging them back into the
       global pretenuring storage in a finalization phase.
     - AllocationSite might be compacted while they would be needed for newspace
       evacuation. To mitigate any problems we defer checking allocation sites for
       newspace till merging locally buffered data.
    
    CQ_EXTRA_TRYBOTS=tryserver.v8:v8_linux_arm64_gc_stress_dbg,v8_linux_gc_stress_dbg,v8_mac_gc_stress_dbg,v8_linux64_asan_rel,v8_linux64_tsan_rel,v8_mac64_asan_rel
    BUG=chromium:524425
    LOG=N
    R=hpayer@chromium.org, ulan@chromium.org
    
    Review URL: https://codereview.chromium.org/1577853007
    
    Cr-Commit-Position: refs/heads/master@{#33523}
    8f0fd8c0
Name
Last commit
Last update
..
blink_tests Loading commit data...
cfi Loading commit data...
gcmole Loading commit data...
generate_shim_headers Loading commit data...
gyp Loading commit data...
luci-go 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...
ICE.html 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-inline-includes.sh Loading commit data...
check-static-initializers.gyp Loading commit data...
check-static-initializers.isolate Loading commit data...
check-static-initializers.sh Loading commit data...
check-unused-bailouts.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...
eval_gc_nvp.py Loading commit data...
eval_gc_time.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...
isolate_driver.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...