v8/include/cppgc
Michael Lippautz 3902ffbba4 cppgc: Persistent: Check thread usage on slow path
Checks whether a Persistent is used from the creation thread on slow
path allocations. In practice, these currently happen every 256
Persistent allocations. This is a best effort check that may help to
flush out issues that are missed with DCHECK builds.

Bug: chromium:1276570
Change-Id: Ia868ca436341b1b5ef427d5b3ec04926c1394e41
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3318658
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Cr-Commit-Position: refs/heads/main@{#78276}
2021-12-07 14:32:47 +00:00
..
internal cppgc: Persistent: Check thread usage on slow path 2021-12-07 14:32:47 +00:00
allocation.h cppgc: Provide alignment attribute to allocations functions 2021-10-12 18:16:26 +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 CTP destruction 2021-08-31 12:13:01 +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: Force EBO to always work with GCed 2021-11-03 22:23:59 +00:00
heap-consistency.h cppgc: Add GetWriteBarrierType that ignores slots 2021-09-16 12:53:21 +00:00
heap-state.h cppgc: Allow querying whether sweeping is active on owning thread 2021-11-26 15:51:30 +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 cppgc: Make bikineev and omerkatz owners of include/cppgc 2020-08-28 08:05:30 +00:00
persistent.h cppgc: Revert diagnosing CHECKs for Persistent 2021-12-06 13:23:45 +00:00
platform.h cppgc: Drop high-address stack assumption 2021-08-16 10:18:04 +00:00
prefinalizer.h cppgc: Support virtual prefinalizers 2021-09-27 12:29:52 +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.