v8/include/cppgc
Michael Lippautz 3161d6786a Reland "cppgc: Fix CTP for destruction""
This avoids a benign race in setting the raw pointer inside CTP
destructor by not emitting the write at all. The handle is destructed
which means that we only need to destroy any backing node but may
leave the handle untouched.

Drive-by:
- Add a few more docs.
- Make Clear() thread-safe.
- Make assignment of a sentinel pointer thread-safe.
- Make assignment of a nullptr thread-safe.

Depends on the Blink change: https://crrev.com/c/3116259

Bug: chromium:1242795, chromium:1243350
Change-Id: I8d76da30893c165e3946322b6d02f6ea2c8e529e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3114064
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Cr-Commit-Position: refs/heads/main@{#76493}
2021-08-25 18:45:56 +00:00
..
internal cppgc: Drop high-address stack assumption 2021-08-16 10:18:04 +00:00
allocation.h cppgc: Optimize GCInfo setup 2021-08-14 11:16:11 +00:00
common.h cppgc: Random style fixes and comment updates 2021-01-26 22:43:44 +00:00
cross-thread-persistent.h Reland "cppgc: Fix CTP for destruction"" 2021-08-25 18:45:56 +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: Adjust explicit management calls 2021-05-05 14:18:37 +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: Wire up discarded size 2021-07-12 16:03:50 +00:00
heap.h cppgc: IWYU cleanups 2021-05-20 10:42:29 +00:00
liveness-broker.h cppgc: LivenessBroker: Treat nullptr as live 2021-08-11 11:59:31 +00:00
macros.h cppgc: IWYU cleanups 2021-05-20 10:42:29 +00:00
member.h cppgc: Allow CrossThreadPersistent to access poisoned memory from GC 2021-07-21 19:11:01 +00:00
name-provider.h cppgc: NameProvider:GetName() -> NameProvider::GetHumanReadableName() 2021-06-08 15:56:46 +00:00
object-size-trait.h cppgc: Fix compilation error on older gcc compilers 2021-01-22 23:13:30 +00:00
OWNERS
persistent.h cppgc: Allow CrossThreadPersistent to access poisoned memory from GC 2021-07-21 19:11:01 +00:00
platform.h cppgc: Drop high-address stack assumption 2021-08-16 10:18:04 +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: Update README 2021-08-24 11:56:53 +00:00
sentinel-pointer.h [cleanup][include] Remove redundant NOLINT annotations 2021-04-30 16:22:19 +00:00
source-location.h cppgc: IWYU cleanups 2021-05-20 10:42:29 +00:00
testing.h cppgc: Implement testing APIs 2021-04-06 13:44:29 +00:00
trace-trait.h cppgc: Fix IsGarabgeCollected trait and friends 2021-01-22 16:20:46 +00:00
type-traits.h Reland "cppgc: Implement basic Member and Persistent checks" 2021-05-10 12:31:05 +00:00
visitor.h cppgc: Allow CrossThreadPersistent to access poisoned memory from GC 2021-07-21 19:11:01 +00:00

Oilpan: C++ Garbage Collection

Oilpan is an open-source garbage collection library for C++ that can be used stand-alone or in collaboration with V8's JavaScript garbage collector.

Key properties

  • Trace-based garbage collection;
  • Precise on-heap memory layout;
  • Conservative on-stack memory layout;
  • Allows for collection with and without considering stack;
  • Incremental and concurrent marking;
  • Incremental and concurrent sweeping;
  • Non-incremental and non-concurrent compaction for selected spaces;

See the Hello World example on how to get started using Oilpan to manage C++ code.

Oilpan follows V8's project organization, see e.g. on how we accept contributions and provide a stable API.