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
DEPS
DIR_METADATA
js_protocol-1.2.json
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
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
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
v8-embedder-heap.h [api, heap, handles] Remove deprecated EmbedderHeapTracer 2023-01-02 15:17:40 +00:00
v8-embedder-state-scope.h
v8-exception.h [api] Rename isolate variables 2022-04-28 12:51:08 +00:00
v8-extension.h
v8-external.h
v8-fast-api-calls.h [fastcall] Support external pointers in fast api calls 2022-12-01 14:19:33 +00:00
v8-forward.h
v8-function-callback.h
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
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
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
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
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
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
v8-proxy.h
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
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
v8-unwinder-state.h [mips32] Delete mips32 from v8 2022-09-13 07:54:54 +00:00
v8-unwinder.h
v8-util.h [api] Deprecate PersistentValueVector 2022-06-09 08:44:13 +00:00
v8-value-serializer-version.h
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
v8-version.h Version 11.1.0 2022-12-15 10:26:39 +00:00
v8-wasm-trap-handler-posix.h
v8-wasm-trap-handler-win.h
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
v8config.h Reland "[x64] Make {Assembler::GrowBuffer} preserve most registers" 2023-01-11 17:53:05 +00:00