v8/tools/debug_helper
Samuel Groß 8ca93205cc [sandbox] Turn ExternalPointerTag into a template parameter
The ExternalPointerTags are assumed to be compile-time constants in most
cases, so turning them into template parameters enforces that. As
decisions such as whether to use the per-isolate or the shared external
pointer table are encoded into the tag values, forcing those to be
compile-time constants guarantees that the compiler will be able to
inline the correct logic when accessing an external pointer.

With this, there are now two (high-level) ways of accessing external pointer fields from C++: the Read/WriteExternalPointerField methods
which require the ExternalPointerTag to be a template parameter, and the
ExternalPointerSlot class which takes the tag as an argument. The latter
is for example used for snapshot deserialization and by the garbage
collector (more generally, by the ObjectVisitor::VisitExternalPointer
method), where the tag is not a compile-time constant.

Finally, this CL also introduces a new ExternalPointerHandle type which
represents the (opaque) on-heap representation of a reference to an
entry in an ExternalPointerTable when sandboxing is enabled. Making this
its own type makes the code a bit more readable.

Bug: v8:10391
Change-Id: I867b8ce41d15d485f1dc66786f233c710c56afcb
Cq-Include-Trybots: luci.v8.try:v8_linux64_heap_sandbox_dbg_ng,v8_linux_arm64_sim_heap_sandbox_dbg_ng
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3720641
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Samuel Groß <saelo@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#81402}
2022-06-27 13:45:20 +00:00
..
BUILD.gn Revert "Reland "[DEPS] Add abseil to deps"" 2021-09-28 20:08:22 +00:00
compiler-types.cc
debug-helper-internal.cc Reland^2 "[ptr-cage] Rename IsolateRoot to PtrComprCageBase" 2021-04-06 01:55:28 +00:00
debug-helper-internal.h
debug-helper.h
debug-macro-shims.h Reland "Reland "[Torque] Generalize Torque literals to larger size"" 2022-02-04 09:40:24 +00:00
DEPS
gen-heap-constants.py [py3] Bump v8heapconstants.py and related files 2022-04-04 13:27:13 +00:00
get-object-properties.cc [sandbox] Turn ExternalPointerTag into a template parameter 2022-06-27 13:45:20 +00:00
heap-constants.cc [heap] Add flag for disabling map space 2022-02-18 09:03:07 +00:00
heap-constants.h [heap] Add flag for disabling map space 2022-02-18 09:03:07 +00:00
list-object-classes.cc
OWNERS
README.md

V8 debug helper

This library is for debugging V8 itself, not debugging JavaScript running within V8. It is designed to be called from a debugger extension running within a native debugger such as WinDbg or LLDB. It can be used on live processes or crash dumps, and cannot assume that all memory is available in a dump.