Original commit message:
[ptr-compr] Fix multi-cage mode
This CL introduces PtrComprCageAccessScope which sets/restores current
thread's pointer compression cage base values. It's supposed to be used
by V8 jobs accessing V8 heap outside of v8::Isolate::Scope or
i::LocalHeap or i::LocalIsolate scopes (they already ensure that the
cage base values are properly initialized).
For all other build modes PtrComprCageAccessScope is a no-op.
For simplicity reasons the multi-cage mode is made incompatible with
external code space.
Bug: v8:13788, v8:14292
Change-Id: I06c2d19a1eb7254fa7af07a17617e22d98abea9f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4846592
Reviewed-by: Jakob Linke <jgruber@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/main@{#90075}
Refs:
|
||
|---|---|---|
| .. | ||
| bazel | ||
| builtins-pgo | ||
| cfi | ||
| clusterfuzz | ||
| cppgc | ||
| debug_helper | ||
| dev | ||
| gcmole | ||
| generate_shim_headers | ||
| heap-layout | ||
| heap-stats | ||
| js | ||
| jsfunfuzz | ||
| link_clicker.extension | ||
| mb | ||
| memory | ||
| msan | ||
| perf | ||
| profiling | ||
| profview | ||
| release | ||
| sanitizers | ||
| snapshot | ||
| system-analyzer | ||
| testrunner | ||
| toolchain | ||
| torque | ||
| tracing/proto-converter | ||
| turbolizer | ||
| ubsan | ||
| unittests | ||
| v8windbg | ||
| valgrind/asan | ||
| vim | ||
| visual_studio | ||
| wasm | ||
| wasm-compilation-hints | ||
| zone-stats | ||
| .vpython3 | ||
| __init__.py | ||
| adb-d8.py | ||
| android-build.sh | ||
| android-run.py | ||
| android-sync.sh | ||
| arguments.mjs | ||
| avg.py | ||
| bash-completion.sh | ||
| bigint-tester.py | ||
| BUILD.gn | ||
| callstats-from-telemetry.sh | ||
| callstats.html | ||
| callstats.py | ||
| callstats_groups.py | ||
| check-inline-includes.sh | ||
| check-static-initializers.sh | ||
| check-unused-bailouts.sh | ||
| check-unused-symbols.sh | ||
| codemap.mjs | ||
| collect_deprecation_stats.sh | ||
| compare-table-gen.js | ||
| compare_torque_output.py | ||
| consarray.mjs | ||
| cpu.sh | ||
| cross_build_gcc.sh | ||
| csvparser.mjs | ||
| DEPS | ||
| detect-builtins.js | ||
| disasm.py | ||
| draw_instruction_graph.sh | ||
| dump-cpp.py | ||
| dumpcpp-driver.mjs | ||
| dumpcpp.mjs | ||
| eval_gc_nvp.py | ||
| eval_gc_time.sh | ||
| find-builtin | ||
| find-commit-for-patch.py | ||
| find_depot_tools.py | ||
| freebsd-tick-processor | ||
| fuzz-harness.sh | ||
| gc-nvp-to-csv.py | ||
| gc-nvp-trace-processor.py | ||
| gc_nvp_common.py | ||
| gdb-v8-support.py | ||
| gdbinit | ||
| gen-inlining-tests.py | ||
| gen-keywords-gen-h.py | ||
| gen-postmortem-metadata.py | ||
| gen-v8-gn.py | ||
| generate-builtins-tests.py | ||
| generate-header-include-checks.py | ||
| generate-runtime-call-stats.py | ||
| generate-ten-powers.scm | ||
| get_landmines.py | ||
| grokdump.py | ||
| heap-snapshot-processor.py | ||
| ic-processor | ||
| ic-processor-driver.mjs | ||
| index.html | ||
| linux-tick-processor | ||
| lldb_commands.py | ||
| locs.py | ||
| logreader.mjs | ||
| mac-nm | ||
| mac-tick-processor | ||
| Makefile.tags | ||
| objdump-v8 | ||
| OWNERS | ||
| package-lock.json | ||
| package.json | ||
| parse-processor | ||
| parse-processor-driver.mjs | ||
| parse-processor.html | ||
| parse-processor.mjs | ||
| perf-compare.py | ||
| predictable_wrapper.py | ||
| PRESUBMIT.py | ||
| process-wasm-compilation-times.py | ||
| profile.mjs | ||
| profile_view.js | ||
| profile_view.mjs | ||
| README.md | ||
| regexp-sequences.py | ||
| run-clang-tidy.py | ||
| run-num-fuzzer.py | ||
| run-tests.py | ||
| run-wasm-api-tests.py | ||
| run.py | ||
| run_perf.py | ||
| shell-utils.h | ||
| sourcemap.mjs | ||
| splaytree.mjs | ||
| stats-viewer.py | ||
| test262-results-parser.js | ||
| tickprocessor-driver.mjs | ||
| tickprocessor.mjs | ||
| try_perf.py | ||
| turbolizer-perf.py | ||
| update-object-macros-undef.py | ||
| v8_presubmit.py | ||
| whitespace.txt | ||
| windbg.js | ||
| windows-tick-processor.bat | ||
| wpr.wprp | ||
TOOLS
This directory contains debugging and investigation tools for V8.
The contents are regularly mirrored to http://v8.dev/tools.
Local Development
For local development you have to start a local webserver under http://localhost:8000:
cd tools/;
npm install;
ws;
Local Symbol Server
The system-analyzer can symbolize profiles for local binaries by running a local symbol server
cd tools/;
ws --stack system-analyzer/lws-middleware.js lws-static cors;
Note that the local symbol server will run nm and objdump and has access to
your files.