v8/include/cppgc
Michael Lippautz 143e6a74d8 cppgc: Check for correct base class inheritance
The only valid way to define a GCed type T is by inheriting from
GarbageCollected<T>. Since this is prone to typos (see tests), add a
simple check that covers most interesting use cases.

The static assert covers
  A -> B -> GarbageCollected<C>

The static assert does not cover
 A -> B -> C -> GarbageCollected<B>

(In order to do so, we would need __direct_bases() support which is
not yet available for C++.)

Bug: pdfium:1670, chromium:1056170
Change-Id: I494de48992f8ba9a1f0f9daad60584d828717403
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2810415
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#73854}
2021-04-08 09:23:57 +00:00
..
internal Reland "cppgc: Rework GC info creation" 2021-03-17 13:27:24 +00:00
allocation.h cppgc: Check for correct base class inheritance 2021-04-08 09:23:57 +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 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 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.