v8/include/cppgc
Michael Lippautz d76064df4f cppgc: Rework GC info creation
Previously, GCInfoTrait relied on the non-trivial constructor of a
static object for registering a new GCInfo object. The generated code
is required to be thread-safe which is achieved by introducing guard
variables in the compiler.

The new version is similar to Blink in that it relies on zero
initialization of a trivially constructible atomic.

Compared to guard variables that are created per GCInfo registration,
the atomic creates less bloat (~20bytes/type) and also results in a
better fast path.

Minimum example: https://godbolt.org/z/qrdTf8

Bug: chromium:1056170
Change-Id: I95efbbf035b655d0440c9477f5391e310e2b71fa
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2764750
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#73463}
2021-03-17 11:33:04 +00:00
..
internal cppgc: Rework GC info creation 2021-03-17 11:33:04 +00:00
allocation.h cppgc: Fix GCInfo folding 2021-03-12 17:04:12 +00:00
common.h cppgc: Random style fixes and comment updates 2021-01-26 22:43:44 +00:00
cross-thread-persistent.h cppgc: Fix {Weak}CrossThreadPersistent destruction 2021-03-09 21:36:00 +00:00
custom-space.h cppgc: Fix CustomSpace trait 2021-01-27 16:48:28 +00:00
default-platform.h cppgc: Fix and merge cppgc samples 2020-11-26 09:12:35 +00:00
DEPS cppgc: Use libplatform as default platform 2020-10-08 18:16:52 +00:00
ephemeron-pair.h cppgc: Check ephemerons for unset key 2021-02-12 16:55:00 +00:00
explicit-management.h cppgc: Require object for cppgc::subtle::Resize() 2021-03-11 10:15:15 +00:00
garbage-collected.h cppgc: Add GCInfo folding 2021-03-11 10:53:26 +00:00
heap-consistency.h cppgc: Fix low-level write barriers 2021-02-05 15:22:04 +00:00
heap-state.h cppgc: Add WasConservativeGC to HeapState 2021-02-25 22:54:05 +00:00
heap-statistics.h cppgc: Rename allocated_size to physical_size in statistics 2021-02-11 17:44:35 +00:00
heap.h cppgc: Allow to disable incremental marking/sweeping 2020-12-10 15:59:38 +00:00
liveness-broker.h cppgc: Add WeakMember handler to LivenessBroker 2021-01-27 00:33:09 +00:00
macros.h cppgc: Add testing API structure 2021-02-03 16:00:37 +00:00
member.h cppgc: Fix low-level write barriers 2021-02-05 15:22:04 +00:00
name-provider.h cppgc: Add naming infrastructure 2020-10-08 12:25:21 +00:00
object-size-trait.h cppgc: Fix compilation error on older gcc compilers 2021-01-22 23:13:30 +00:00
OWNERS cppgc: Make bikineev and omerkatz owners of include/cppgc 2020-08-28 08:05:30 +00:00
persistent.h cppgc: Fix low-level write barriers 2021-02-05 15:22:04 +00:00
platform.h cppgc: Allow multiple calls to InitializeProcess/ShutdownProcess 2021-02-10 17:02:20 +00:00
prefinalizer.h cppgc: Fix IsGarabgeCollected trait and friends 2021-01-22 16:20:46 +00:00
process-heap-statistics.h cppgc: Implement process-global state accessors. 2021-02-17 22:37:24 +00:00
README.md cppgc: Hello world 2020-03-23 21:42:56 +00:00
sentinel-pointer.h cppgc: Fix low-level write barriers 2021-02-05 15:22:04 +00:00
source-location.h cppgc: Improve API documentation 2020-10-19 09:36:18 +00:00
testing.h Reland "cppgc: Rework testing GC infrastructure" 2021-02-26 21:29:42 +00:00
trace-trait.h cppgc: Fix IsGarabgeCollected trait and friends 2021-01-22 16:20:46 +00:00
type-traits.h cppgc: Fix GC traits and add documentation 2021-01-22 20:27:09 +00:00
visitor.h cppgc: Rework Visitor ephemeron handling 2021-03-04 11:30:36 +00:00

C++ Garbage Collection

This directory provides an open-source garbage collection library for C++.

The library is under construction, meaning that all APIs in this directory are incomplete and considered unstable and should not be used.