v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
cppgc Namespace Reference

Namespaces

namespace  internal
 
namespace  subtle
 
namespace  testing
 

Classes

struct  AdditionalBytes
 
class  AllocationHandle
 
class  CustomSpace
 
class  CustomSpaceBase
 
struct  CustomSpaceIndex
 
class  DefaultPlatform
 
struct  EphemeronPair
 
class  GarbageCollected
 
class  GarbageCollectedMixin
 
class  Heap
 
class  HeapHandle
 
struct  HeapStatistics
 
class  LivenessBroker
 
class  MakeGarbageCollectedTrait
 
class  MakeGarbageCollectedTraitBase
 
class  NameProvider
 
class  Platform
 
struct  PostConstructionCallbackTrait
 
class  ProcessHeapStatistics
 
struct  SpaceTrait
 
struct  TraceDescriptor
 
struct  TraceTrait
 
struct  TraceTrait< v8::TracedReference< T > >
 
class  Visitor
 

Concepts

concept  IsStackAllocatedType
 

Typedefs

template<typename T >
using Member
 
template<typename T >
using WeakMember
 
template<typename T >
using UntracedMember
 
template<typename T >
using Persistent
 
template<typename T >
using WeakPersistent
 
using IdleTask = v8::IdleTask
 
using JobHandle = v8::JobHandle
 
using JobDelegate = v8::JobDelegate
 
using JobTask = v8::JobTask
 
using PageAllocator = v8::PageAllocator
 
using Task = v8::Task
 
using TaskPriority = v8::TaskPriority
 
using TaskRunner = v8::TaskRunner
 
using TracingController = v8::TracingController
 
using SourceLocation = v8::SourceLocation
 
using TraceCallback = void (*)(Visitor* visitor, const void* object)
 
using TraceDescriptorCallback = TraceDescriptor (*)(const void* address)
 
using WeakCallback = void (*)(const LivenessBroker&, const void*)
 

Enumerations

enum class  EmbedderStackState { kMayContainHeapPointers , kNoHeapPointers }
 

Functions

bool IsInitialized ()
 
void InitializeProcess (PageAllocator *page_allocator, size_t desired_heap_size)
 
void ShutdownProcess ()
 
template<typename T , typename... Args>
V8_INLINE TMakeGarbageCollected (AllocationHandle &handle, Args &&... args)
 
template<typename T , typename... Args>
V8_INLINE TMakeGarbageCollected (AllocationHandle &handle, AdditionalBytes additional_bytes, Args &&... args)
 

Variables

constexpr internal::SentinelPointer kSentinelPointer
 
template<typename T >
constexpr bool IsGarbageCollectedMixinTypeV
 
template<typename T >
constexpr bool IsGarbageCollectedTypeV
 
template<typename T >
constexpr bool IsGarbageCollectedOrMixinTypeV
 
template<typename T >
constexpr bool IsGarbageCollectedWithMixinTypeV
 
template<typename T >
constexpr bool IsMemberTypeV = internal::IsMemberType<T>::value
 
template<typename T >
constexpr bool IsUntracedMemberTypeV = internal::IsUntracedMemberType<T>::value
 
template<typename T >
constexpr bool IsWeakMemberTypeV = internal::IsWeakMemberType<T>::value
 
template<typename T >
constexpr bool IsWeakV = internal::IsWeak<T>::value
 
template<typename T >
constexpr bool IsCompleteV = internal::IsComplete<T>::value
 
template<typename T >
constexpr bool IsMemberOrWeakMemberTypeV
 
template<typename T >
constexpr bool IsAnyMemberTypeV = internal::IsAnyMemberTypeV<std::decay_t<T>>
 

Detailed Description

cppgc - A C++ garbage collection library.

Typedef Documentation

◆ IdleTask

Definition at line 18 of file platform.h.

◆ JobDelegate

Definition at line 20 of file platform.h.

◆ JobHandle

Definition at line 19 of file platform.h.

◆ JobTask

Definition at line 21 of file platform.h.

◆ Member

template<typename T >
using cppgc::Member
Initial value:
internal::BasicMember<
T, internal::StrongMemberTag, internal::DijkstraWriteBarrierPolicy,
internal::DefaultMemberCheckingPolicy, internal::DefaultMemberStorage>
#define T

Members are used in classes to contain strong pointers to other garbage collected objects. All Member fields of a class must be traced in the class' trace method.

Definition at line 564 of file member.h.

◆ PageAllocator

Definition at line 22 of file platform.h.

◆ Persistent

template<typename T >
using cppgc::Persistent
Initial value:
internal::BasicPersistent<T, internal::StrongPersistentPolicy>

Persistent is a way to create a strong pointer from an off-heap object to another on-heap object. As long as the Persistent handle is alive the GC will keep the object pointed to alive. The Persistent handle is always a GC root from the point of view of the GC. Persistent must be constructed and destructed in the same thread.

Definition at line 362 of file persistent.h.

◆ SourceLocation

Definition at line 12 of file source-location.h.

◆ Task

Definition at line 23 of file platform.h.

◆ TaskPriority

Definition at line 24 of file platform.h.

◆ TaskRunner

Definition at line 25 of file platform.h.

◆ TraceCallback

using cppgc::TraceCallback = void (*)(Visitor* visitor, const void* object)

Callback for invoking tracing on a given object.

Parameters
visitorThe visitor to dispatch to.
objectThe object to invoke tracing on.

Definition at line 38 of file trace-trait.h.

◆ TraceDescriptorCallback

using cppgc::TraceDescriptorCallback = TraceDescriptor (*)(const void* address)

Callback for getting a TraceDescriptor for a given address.

Parameters
addressPossibly inner address of an object.
Returns
a TraceDescriptor for the provided address.

Definition at line 62 of file trace-trait.h.

◆ TracingController

Definition at line 26 of file platform.h.

◆ UntracedMember

template<typename T >
using cppgc::UntracedMember
Initial value:
internal::BasicMember<
T, internal::UntracedMemberTag, internal::NoWriteBarrierPolicy,
internal::DefaultMemberCheckingPolicy, internal::DefaultMemberStorage>

UntracedMember is a pointer to an on-heap object that is not traced for some reason. Do not use this unless you know what you are doing. Keeping raw pointers to on-heap objects is prohibited unless used from stack. Pointee must be kept alive through other means.

Definition at line 588 of file member.h.

◆ WeakCallback

using cppgc::WeakCallback = void (*)(const LivenessBroker&, const void*)

Definition at line 37 of file visitor.h.

◆ WeakMember

template<typename T >
using cppgc::WeakMember
Initial value:
internal::BasicMember<
T, internal::WeakMemberTag, internal::DijkstraWriteBarrierPolicy,
internal::DefaultMemberCheckingPolicy, internal::DefaultMemberStorage>

WeakMember is similar to Member in that it is used to point to other garbage collected objects. However instead of creating a strong pointer to the object, the WeakMember creates a weak pointer, which does not keep the pointee alive. Hence if all pointers to to a heap allocated object are weak the object will be garbage collected. At the time of GC the weak pointers will automatically be set to null.

Definition at line 577 of file member.h.

◆ WeakPersistent

template<typename T >
using cppgc::WeakPersistent
Initial value:
internal::BasicPersistent<T, internal::WeakPersistentPolicy>

WeakPersistent is a way to create a weak pointer from an off-heap object to an on-heap object. The pointer is automatically cleared when the pointee gets collected. WeakPersistent must be constructed and destructed in the same thread.

Definition at line 372 of file persistent.h.

Enumeration Type Documentation

◆ EmbedderStackState

enum class cppgc::EmbedderStackState
strong

Indicator for the stack state of the embedder.

Enumerator
kMayContainHeapPointers 

Stack may contain interesting heap pointers.

kNoHeapPointers 

Stack does not contain any interesting heap pointers.

Definition at line 15 of file common.h.

Function Documentation

◆ InitializeProcess()

V8_EXPORT void cppgc::InitializeProcess ( PageAllocator * page_allocator = nullptr,
size_t desired_heap_size = 0 )

Process-global initialization of the garbage collector. Must be called before creating a Heap.

Can be called multiple times when paired with ShutdownProcess().

Parameters
page_allocatorThe allocator used for maintaining meta data. Must stay always alive and not change between multiple calls to InitializeProcess. If no allocator is provided, a default internal version will be used.
desired_heap_sizeDesired amount of virtual address space to reserve for the heap, in bytes. Actual size will be clamped to minimum and maximum values based on compile-time settings and may be rounded up. If this parameter is zero, a default value will be used.

Definition at line 92 of file platform.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsInitialized()

V8_EXPORT bool cppgc::IsInitialized ( )

Definition at line 90 of file platform.cc.

Here is the caller graph for this function:

◆ MakeGarbageCollected() [1/2]

template<typename T , typename... Args>
V8_INLINE T * cppgc::MakeGarbageCollected ( AllocationHandle & handle,
AdditionalBytes additional_bytes,
Args &&... args )

Constructs a managed object of type T where T transitively inherits from GarbageCollected. Created objects will have additional bytes appended to it. Allocated memory would suffice for sizeof(T) + additional_bytes.

Parameters
additional_bytesDenotes how many bytes to append to T.
argsList of arguments with which an instance of T will be constructed.
Returns
an instance of type T.

Definition at line 294 of file allocation.h.

Here is the call graph for this function:

◆ MakeGarbageCollected() [2/2]

template<typename T , typename... Args>
V8_INLINE T * cppgc::MakeGarbageCollected ( AllocationHandle & handle,
Args &&... args )

Constructs a managed object of type T where T transitively inherits from GarbageCollected.

Parameters
argsList of arguments with which an instance of T will be constructed.
Returns
an instance of type T.

Definition at line 276 of file allocation.h.

Here is the call graph for this function:

◆ ShutdownProcess()

V8_EXPORT void cppgc::ShutdownProcess ( )

Must be called after destroying the last used heap. Some process-global metadata may not be returned and reused upon a subsequent InitializeProcess() call.

Definition at line 115 of file platform.cc.

Variable Documentation

◆ IsAnyMemberTypeV

template<typename T >
bool cppgc::IsAnyMemberTypeV = internal::IsAnyMemberTypeV<std::decay_t<T>>
constexpr

Value is true for any member type.

Definition at line 268 of file type-traits.h.

◆ IsCompleteV

template<typename T >
bool cppgc::IsCompleteV = internal::IsComplete<T>::value
constexpr

Value is true for types that are complete, and false otherwise.

Definition at line 255 of file type-traits.h.

◆ IsGarbageCollectedMixinTypeV

template<typename T >
bool cppgc::IsGarbageCollectedMixinTypeV
constexpr
Initial value:
=
internal::IsGarbageCollectedMixinType<T>::value

Value is true for types that inherit from GarbageCollectedMixin but not GarbageCollected<T> (i.e., they are free mixins), and false otherwise.

Definition at line 199 of file type-traits.h.

◆ IsGarbageCollectedOrMixinTypeV

template<typename T >
bool cppgc::IsGarbageCollectedOrMixinTypeV
constexpr
Initial value:
=
internal::IsGarbageCollectedOrMixinType<T>::value

Value is true for types that inherit from either GarbageCollected<T> or GarbageCollectedMixin, and false otherwise.

Definition at line 215 of file type-traits.h.

◆ IsGarbageCollectedTypeV

template<typename T >
bool cppgc::IsGarbageCollectedTypeV
constexpr
Initial value:
=
internal::IsGarbageCollectedType<T>::value

Value is true for types that inherit from GarbageCollected<T>, and false otherwise.

Definition at line 207 of file type-traits.h.

◆ IsGarbageCollectedWithMixinTypeV

template<typename T >
bool cppgc::IsGarbageCollectedWithMixinTypeV
constexpr
Initial value:
=
internal::IsGarbageCollectedWithMixinType<T>::value

Value is true for types that inherit from GarbageCollected<T> and GarbageCollectedMixin, and false otherwise.

Definition at line 223 of file type-traits.h.

◆ IsMemberOrWeakMemberTypeV

template<typename T >
bool cppgc::IsMemberOrWeakMemberTypeV
constexpr
Initial value:
=
IsMemberTypeV<T> || IsWeakMemberTypeV<T>

Value is true for member types Member<T> and WeakMember<T>.

Definition at line 261 of file type-traits.h.

◆ IsMemberTypeV

template<typename T >
bool cppgc::IsMemberTypeV = internal::IsMemberType<T>::value
constexpr

Value is true for types of type Member<T>, and false otherwise.

Definition at line 230 of file type-traits.h.

◆ IsUntracedMemberTypeV

template<typename T >
bool cppgc::IsUntracedMemberTypeV = internal::IsUntracedMemberType<T>::value
constexpr

Value is true for types of type UntracedMember<T>, and false otherwise.

Definition at line 236 of file type-traits.h.

◆ IsWeakMemberTypeV

template<typename T >
bool cppgc::IsWeakMemberTypeV = internal::IsWeakMemberType<T>::value
constexpr

Value is true for types of type WeakMember<T>, and false otherwise.

Definition at line 242 of file type-traits.h.

◆ IsWeakV

template<typename T >
bool cppgc::IsWeakV = internal::IsWeak<T>::value
constexpr

Value is true for types that are considered weak references, and false otherwise.

Definition at line 249 of file type-traits.h.

◆ kSentinelPointer

internal::SentinelPointer cppgc::kSentinelPointer
constexpr

Definition at line 35 of file sentinel-pointer.h.