Classes | |
class | DisallowGarbageCollectionScope |
class | HeapConsistency |
class | HeapState |
class | NoGarbageCollectionScope |
struct | ObjectSizeTrait |
struct | ObjectSizeTrait< T, false > |
struct | ObjectSizeTrait< T, true > |
Typedefs | |
template<typename T > | |
using | CrossThreadPersistent = internal::BasicCrossThreadPersistent< T, internal::StrongCrossThreadPersistentPolicy > |
template<typename T > | |
using | WeakCrossThreadPersistent = internal::BasicCrossThreadPersistent< T, internal::WeakCrossThreadPersistentPolicy > |
template<typename T > | |
using | UncompressedMember = internal::BasicMember< T, internal::StrongMemberTag, internal::DijkstraWriteBarrierPolicy, internal::DefaultMemberCheckingPolicy, internal::RawPointer > |
Functions | |
template<typename T > | |
void | FreeUnreferencedObject (HeapHandle &heap_handle, T &object) |
template<typename T > | |
bool | Resize (T &object, AdditionalBytes additional_bytes) |
using cppgc::subtle::CrossThreadPersistent = typedef internal::BasicCrossThreadPersistent< T, internal::StrongCrossThreadPersistentPolicy> |
DO NOT USE: Has known caveats, see below.
CrossThreadPersistent allows retaining objects from threads other than the thread the owning heap is operating on.
Known caveats:
using cppgc::subtle::UncompressedMember = typedef internal::BasicMember< T, internal::StrongMemberTag, internal::DijkstraWriteBarrierPolicy, internal::DefaultMemberCheckingPolicy, internal::RawPointer> |
UncompressedMember. Use with care in hot paths that would otherwise cause many decompression cycles.
using cppgc::subtle::WeakCrossThreadPersistent = typedef internal::BasicCrossThreadPersistent< T, internal::WeakCrossThreadPersistentPolicy> |
DO NOT USE: Has known caveats, see below.
CrossThreadPersistent allows weakly retaining objects from threads other than the thread the owning heap is operating on.
Known caveats:
void cppgc::subtle::FreeUnreferencedObject | ( | HeapHandle & | heap_handle, |
T & | object | ||
) |
Informs the garbage collector that object
can be immediately reclaimed. The destructor may not be invoked immediately but only on next garbage collection.
It is up to the embedder to guarantee that no other object holds a reference to object
after calling FreeUnreferencedObject()
. In case such a reference exists, it's use results in a use-after-free.
To aid in using the API, FreeUnreferencedObject()
may be called from destructors on objects that would be reclaimed in the same garbage collection cycle.
heap_handle | The corresponding heap. |
object | Reference to an object that is of type GarbageCollected and should be immediately reclaimed. |
bool cppgc::subtle::Resize | ( | T & | object, |
AdditionalBytes | additional_bytes | ||
) |
Tries to resize object
of type T
with additional bytes on top of sizeof(T). Resizing is only useful with trailing inlined storage, see e.g. MakeGarbageCollected(AllocationHandle&, AdditionalBytes)
.
Resize()
performs growing or shrinking as needed and may skip the operation for internal reasons, see return value.
It is up to the embedder to guarantee that in case of shrinking a larger object down, the reclaimed area is not used anymore. Any subsequent use results in a use-after-free.
The object
must be live when calling Resize()
.
object | Reference to an object that is of type GarbageCollected and should be resized. |
additional_bytes | Bytes in addition to sizeof(T) that the object should provide. |