v8/include
Michael Lippautz 24ca73004e cppgc: Implement slim write barrier
Introduces a slim write barrier for Oilpan behind
`cppgc_enable_slim_write_barrier` that is enabled by default. The slim
write barrier only performs a single approximate global check for
whether the write barrier is needed and delegates all other checks to
a slow path call. This is beneficial in configurations that do not need
many checks for the barrier overall, i.e., configurations without
young generation. Young generation is off by default which is why this
approach is beneficial.

On Speedometer the write barrier is hit 75M times with a fast bailout
of 99.3%. Progression on Speedometer2 is somewhere around 0.2-0.5%.

The resulting code embedded in another function is only 34 bytes
compared to 128 bytes before. See attached bug for detailed assembly
snippet.

Change-Id: I6869513186e7a26104c46f1f2ac2cfa855689f64
Bug: chromium:1406464
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4152488
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85232}
2023-01-11 18:54:57 +00:00
..
cppgc cppgc: Implement slim write barrier 2023-01-11 18:54:57 +00:00
libplatform [Tracing w/SDK] Replace TraceStateObserver with TrackEventSessionObserver 2022-12-01 11:18:24 +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 [inspector] Remove Type Profiler 2022-10-10 11:50:16 +00:00
js_protocol.pdl [inspector] Provide more details about destroyed context 2023-01-05 09:27:47 +00:00
OWNERS [owners] Adjust ownership for v8-debug.h. 2021-12-30 08:04:21 +00:00
v8-array-buffer.h [rab/gsab,api] Add resizable BackingStore creation 2022-12-14 01:54:00 +00:00
v8-callbacks.h [execution] Report first old space page as CrashKey 2022-11-02 08:26:30 +00:00
v8-container.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-context.h [execution] Add ability to set the microtask queue for the context. 2022-10-26 16:40:21 +00:00
v8-cppgc.h [cppgc]: Fix build on msvc 2023-01-04 10:12:56 +00:00
v8-data.h Mark Data constructor deleted. 2022-10-25 23:02:10 +00:00
v8-date.h Fix Date BiDi format 2022-07-11 17:19:43 +00:00
v8-debug.h Introduce v8::StackTrace::CurrentScriptNameOrSourceURL 2022-01-17 11:34:28 +00:00
v8-embedder-heap.h [api, heap, handles] Remove deprecated EmbedderHeapTracer 2023-01-02 15:17:40 +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] Rename isolate variables 2022-04-28 12:51:08 +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 [fastcall] Support external pointers in fast api calls 2022-12-01 14:19:33 +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 Implement Function::Experimental_IsNopFunction. 2022-08-01 01:36:02 +00:00
v8-initialization.h Reland "[sandbox] Fold V8_SANDBOXED_EXTERNAL_POINTERS into V8_ENABLE_SANDBOX" 2022-09-12 11:48:02 +00:00
v8-inspector-protocol.h Fix LINT exceptions across the code base 2020-04-27 16:37:04 +00:00
v8-inspector.h [inspector] Introduce debugger session stop API 2022-12-09 12:08:58 +00:00
v8-internal.h [fastcall] Support external pointers in fast api calls 2022-12-01 14:19:33 +00:00
v8-isolate.h [api, heap, handles] Remove deprecated EmbedderHeapTracer 2023-01-02 15:17:40 +00:00
v8-json.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-local-handle.h [static-roots] Use operator== in HeapObject::Is##Type 2022-12-21 12:33:34 +00:00
v8-locker.h [api] Advance API deprecation 2022-08-16 08:11:57 +00:00
v8-maybe.h api: Allow v8::Maybe<MovableType>. 2022-04-30 21:47:24 +00:00
v8-memory-span.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-message.h [api] Advance API deprecation 2022-08-16 08:11:57 +00:00
v8-metrics.h [wasm] Deprecate CPU timings in metrics 2022-12-15 14:25:48 +00:00
v8-microtask-queue.h [execution] Pass microtask queue from Context to MicrotasksScope 2022-10-19 14:56:37 +00:00
v8-microtask.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-object.h [sandbox] Prepare ExternalPointerTable rollout 2022-07-11 13:34:54 +00:00
v8-persistent-handle.h [api] Remove deprecated global handle APIs 2022-06-09 15:39:03 +00:00
v8-platform.h [Tracing w/SDK] Replace TraceStateObserver with TrackEventSessionObserver 2022-12-01 11:18:24 +00:00
v8-primitive-object.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-primitive.h Reland "[strings] Support shared external strings" 2022-09-07 08:54:16 +00:00
v8-profiler.h [profiler] add Serialize to v8::CpuProfile 2022-10-25 10:49:04 +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 [regexp] Add v-Flag for Unicode Sets 2022-09-06 17:51:56 +00:00
v8-script.h [api] Expose parsed module source map urls 2022-10-05 08:13:48 +00:00
v8-snapshot.h [api] mark readonly usage of StartupData as const 2022-12-09 16:58:44 +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 %MapIteratorPrototype% and %SetIteratorPrototype% 2022-11-10 15:50:48 +00:00
v8-traced-handle.h [api, heap, handles] Remove deprecated EmbedderHeapTracer 2023-01-02 15:17:40 +00:00
v8-typed-array.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
v8-unwinder-state.h [mips32] Delete mips32 from v8 2022-09-13 07:54:54 +00:00
v8-unwinder.h Reland "[profiler] Surface VM & Embedder State" 2021-12-07 19:00:07 +00:00
v8-util.h [api] Deprecate PersistentValueVector 2022-06-09 08:44:13 +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 [shared-struct] Rework shared value serializer API again 2022-09-07 23:41:26 +00:00
v8-value.h [inspector] Add [[WeakRefTarget]] internal property. 2022-10-21 12:14:52 +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 11.1.0 2022-12-15 10:26:39 +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 [wasm][API] Remove deprecated API 2022-08-29 10:43:55 +00:00
v8-weak-callback-info.h [api] Remove APIs for resurrecting finalizers 2022-04-21 07:05:25 +00:00
v8.h Remove many superfluous STL includes in headers. 2022-01-13 20:56:45 +00:00
v8config.h Reland "[x64] Make {Assembler::GrowBuffer} preserve most registers" 2023-01-11 17:53:05 +00:00