|
5 | 5 | * matched by both a global: and a local: pattern in favour of global:, so the |
6 | 6 | * internals cannot be carved back out with a "local: v8::internal::*" entry. |
7 | 7 | * |
| 8 | + * The case rule alone is not enough, because inline code in the public headers |
| 9 | + * calls out-of-line helpers that live in the private namespaces: |
| 10 | + * v8::Object::GetInternalField() reaches |
| 11 | + * v8::internal::Internals::GetCurrentIsolate(), every cppgc::Member<T> store |
| 12 | + * reaches cppgc::internal::WriteBarrier, MakeGarbageCollected reaches the |
| 13 | + * allocation trait. A plugin compiled against the public headers cannot link |
| 14 | + * without them, so they are listed one by one below rather than re-admitted as |
| 15 | + * v8::internal::* / cppgc::internal::*, which would put tens of thousands of |
| 16 | + * symbols back. A name belongs in that group only if an inline body under |
| 17 | + * include/ references it -- static data members included, since the barrier and |
| 18 | + * pointer-compression fast paths read them directly. Match the whole class, or |
| 19 | + * the bare function name followed by *, so an entry survives a signature change |
| 20 | + * across a V8 bump. |
| 21 | + * |
8 | 22 | * Patterns must stay unquoted -- a quoted string is matched literally, not as a |
9 | | - * wildcard. |
| 23 | + * wildcard. An unquoted pattern cannot contain a parenthesis either, so an |
| 24 | + * overload set can only be narrowed down to its name, never to one signature. |
10 | 25 | */ |
11 | 26 | { |
12 | 27 | global: |
|
20 | 35 | v8::api_internal::*; |
21 | 36 | v8::platform::*; |
22 | 37 | cppgc::[A-Z]*; |
| 38 | + |
| 39 | + v8::internal::CopyTracedReference*; |
| 40 | + v8::internal::DisposeTracedReference*; |
| 41 | + v8::internal::GlobalizeTracedReference*; |
| 42 | + v8::internal::Internals::CheckInitializedImpl*; |
| 43 | + v8::internal::Internals::GetCurrentIsolate*; |
| 44 | + v8::internal::MoveTracedReference*; |
| 45 | + v8::internal::ShouldThrowOnError*; |
| 46 | + v8::internal::StrongRootAllocatorBase::*; |
| 47 | + v8::internal::VerifyHandleIsNonEmpty*; |
| 48 | + cppgc::internal::BaseObjectSizeTrait::*; |
| 49 | + cppgc::internal::CageBaseGlobal::*; |
| 50 | + cppgc::internal::CagedHeapBase::*; |
| 51 | + cppgc::internal::DCheckImpl*; |
| 52 | + cppgc::internal::EnsureGCInfoIndexTrait::*; |
| 53 | + cppgc::internal::ExplicitManagementImpl::*; |
| 54 | + cppgc::internal::Fatal*; |
| 55 | + cppgc::internal::MakeGarbageCollectedTraitInternal::*; |
| 56 | + cppgc::internal::NameTraitBase::*; |
| 57 | + cppgc::internal::PersistentRegion::*; |
| 58 | + cppgc::internal::PersistentRegionBase::*; |
| 59 | + cppgc::internal::PersistentRegionLock::*; |
| 60 | + cppgc::internal::PrefinalizerRegistration::*; |
| 61 | + cppgc::internal::SameThreadEnabledCheckingPolicyBase::*; |
| 62 | + cppgc::internal::StrongCrossThreadPersistentPolicy::*; |
| 63 | + cppgc::internal::StrongPersistentPolicy::*; |
| 64 | + cppgc::internal::TraceTraitFromInnerAddressImpl::*; |
| 65 | + cppgc::internal::WeakCrossThreadPersistentPolicy::*; |
| 66 | + cppgc::internal::WeakPersistentPolicy::*; |
| 67 | + cppgc::internal::WriteBarrier::*; |
23 | 68 | }; |
24 | 69 | local: |
25 | 70 | *; |
|
0 commit comments