v8/include
Michael Lippautz cf25b3bc53 cppgc: Rework prefinalizers
Move the check for whether an object is live or dead out of the
prefinalizer trampoline. Moving it into the backend allows for
inlining the check which avoids a call to the trampoline for live
objects.

On catapult benchmarks (e.g. cnn:2021, nytimes:2020), there's often
~2k finalizers registered. In order to avoid memory overhead in the
range of a few KB, we store the fact whether the object points to the
base object payload in the LSB of the pointer. For caged builds this
is replaced with just storing the index into the cage for both object
and base object payload.

Locally saves around ~10% of atomic sweeping processing time which is
in the order of .05ms.

Bug: v8:12698
Change-Id: I198205a6b1d57fc2df821ee4e73e53dc6f825ff5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3497764
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79442}
2022-03-10 12:53:32 +00:00
..
cppgc cppgc: Rework prefinalizers 2022-03-10 12:53:32 +00:00
libplatform [api] Advance API deprecation for methods last changed in v9.7 2022-01-26 17:30:21 +00:00
APIDesign.md Move inspector protocol definitions to include/ 2019-06-18 17:59:36 +00:00
DEPS cppgc: Implement process-global state accessors. 2021-02-17 22:37:24 +00:00
DIR_METADATA Add DIR_METADATA files to v8. 2020-10-20 22:12:28 +00:00
js_protocol-1.2.json Move inspector protocol definitions to include/ 2019-06-18 17:59:36 +00:00
js_protocol-1.3.json Move inspector protocol definitions to include/ 2019-06-18 17:59:36 +00:00
js_protocol.pdl [inspector] Add Runtime#getExceptionDetails CDP method 2022-01-19 09:38:31 +00:00
OWNERS [owners] Adjust ownership for v8-debug.h. 2021-12-30 08:04:21 +00:00
v8-array-buffer.h V8 Sandbox rebranding 2021-12-15 17:09:36 +00:00
v8-callbacks.h [ShadowRealm] Part 1 - Skeleton 2022-01-25 18:10:57 +00:00
v8-container.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-context.h [sandbox] Store external pointers in EmbedderDataSlots in shifted form 2022-02-22 13:40:35 +00:00
v8-cppgc.h cppgc: young-gen: Prepare infra for young generation 2022-02-02 10:29:55 +00:00
v8-data.h [api] Introduce new HostImportModuleDynamicallyCallback 2021-11-05 14:35:43 +00:00
v8-date.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-debug.h Introduce v8::StackTrace::CurrentScriptNameOrSourceURL 2022-01-17 11:34:28 +00:00
v8-embedder-heap.h api: Forward deprecations around EmbedderHeapTracer 2022-02-22 13:25:45 +00:00
v8-embedder-state-scope.h Shift EmbedderState values next to each other 2022-01-10 17:43:47 +00:00
v8-exception.h [api] Advance API deprecation for methods last changed in v9.7 2022-01-26 17:30:21 +00:00
v8-extension.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-external.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-fast-api-calls.h [api] Advance API deprecation for methods last changed in v9.7 2022-01-26 17:30:21 +00:00
v8-forward.h [include] Add TryCatch and Extension to v8-forward.h 2021-09-23 13:15:10 +00:00
v8-function-callback.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-function.h [api] Deprecate v8::ScriptCompiler::CompileFunctionInContext 2021-10-27 07:19:51 +00:00
v8-initialization.h [api] Advance API deprecation for methods last changed in v9.8 2022-01-27 14:03:56 +00:00
v8-inspector-protocol.h Fix LINT exceptions across the code base 2020-04-27 16:37:04 +00:00
v8-inspector.h Make empty V8DebuggerId ctor public 2022-02-08 16:41:31 +00:00
v8-internal.h [sandbox] Store external pointer table indices shifted to the left 2022-01-31 15:25:27 +00:00
v8-isolate.h [counter] Add use counts for f.arguments and .caller 2022-03-07 17:56:32 +00:00
v8-json.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-local-handle.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-locker.h [execution] Move v8::Locker::WasEverUsed() flag into Isolate 2022-01-20 19:08:49 +00:00
v8-maybe.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-memory-span.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-message.h [message] Remove deprecated PrintCurrentStackTrace function which take a FILE* 2022-02-14 14:36:38 +00:00
v8-metrics.h heap: Migrate full GC cycle UMA metrics 2022-03-08 18:27:13 +00:00
v8-microtask-queue.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-microtask.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-object.h [sandbox] Store external pointers in EmbedderDataSlots in shifted form 2022-02-22 13:40:35 +00:00
v8-persistent-handle.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-platform.h [base] Don't return bool from VirtualAddressSpace::Free* routines 2022-03-07 16:53:23 +00:00
v8-primitive-object.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-primitive.h [api] Advance API deprecation for methods last changed in v9.7 2022-01-26 17:30:21 +00:00
v8-profiler.h Revert "[profiler] opt-in tracing setting" 2022-02-21 13:27:23 +00:00
v8-promise.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-proxy.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-regexp.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-script.h [api] Advance API deprecation for methods last changed in v9.8 2022-01-27 14:03:56 +00:00
v8-snapshot.h Remove many superfluous STL includes in headers. 2022-01-13 20:56:45 +00:00
v8-statistics.h [api][profiler] Surface CpuProfiler memory in HeapCodeStatistics 2021-11-04 11:01:09 +00:00
v8-template.h api: Expose initial_array_prototype to public 2021-10-01 16:39:47 +00:00
v8-traced-handle.h api: Forward deprecations around EmbedderHeapTracer 2022-02-22 13:25:45 +00:00
v8-typed-array.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-unwinder-state.h [LOONG64] Add LoongArch64 backend 2021-08-16 13:05:19 +00:00
v8-unwinder.h Reland "[profiler] Surface VM & Embedder State" 2021-12-07 19:00:07 +00:00
v8-util.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-value-serializer-version.h Reland^2 "[string] Support shared strings in Value{Serializer,Deserializer}" 2022-01-26 21:00:12 +00:00
v8-value-serializer.h Reland^2 "[string] Support shared strings in Value{Serializer,Deserializer}" 2022-01-26 21:00:12 +00:00
v8-value.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-version-string.h Fix LINT exceptions across the code base 2020-04-27 16:37:04 +00:00
v8-version.h Version 10.1.0 2022-02-17 13:28:30 +00:00
v8-wasm-trap-handler-posix.h Fix LINT exceptions across the code base 2020-04-27 16:37:04 +00:00
v8-wasm-trap-handler-win.h Fix LINT exceptions across the code base 2020-04-27 16:37:04 +00:00
v8-wasm.h Allow compiled module invalidation at WasmStreaming::Finish() 2021-11-23 16:05:34 +00:00
v8-weak-callback-info.h heap,api: Deprecate resurrecting finalizers 2022-03-07 20:43:02 +00:00
v8.h Remove many superfluous STL includes in headers. 2022-01-13 20:56:45 +00:00
v8config.h Split V8_OS_MACOSX into V8_OS_DARWIN and V8_OS_MACOS 2022-02-18 10:24:59 +00:00