UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UE::GC::TReferenceBatcher< UnvalidatedReferenceType, ValidatedReferenceType, ProcessorType > Class Template Reference
+ Inheritance diagram for UE::GC::TReferenceBatcher< UnvalidatedReferenceType, ValidatedReferenceType, ProcessorType >:

Public Member Functions

 TReferenceBatcher (FWorkerContext &InContext)
 
FORCEINLINE_DEBUGGABLE void PushArray (TArray< UObject * > &Array)
 
FORCEINLINE_DEBUGGABLE void PushArray (FStridedReferenceArray StridedArray)
 
template<class ViewType >
FORCEINLINE_DEBUGGABLE void PushReferenceView (ViewType View)
 
FORCEINLINE_DEBUGGABLE void PushReference (UnvalidatedReferenceType UnvalidatedReference)
 
FORCEINLINE_DEBUGGABLE void FlushQueues ()
 

Additional Inherited Members

- Static Protected Attributes inherited from UE::GC::FBatcherBase
static constexpr uint32 ArrayBatchSize = 32
 
static constexpr uint32 UnvalidatedBatchSize = 32
 
static constexpr uint32 ValidatedBatchSize = 1024
 
static constexpr uint32 ValidatedPrefetchAhead = 64
 

Detailed Description

template<class UnvalidatedReferenceType, class ValidatedReferenceType, class ProcessorType>
class UE::GC::TReferenceBatcher< UnvalidatedReferenceType, ValidatedReferenceType, ProcessorType >

Queues up memory indirection to avoid synchronous cache misses by prefetching data just in time.

Uses bounded queues to avoid branching, control temp memory consumption, allow compiler to generate vectorized code and make life easier for the branch predictor.

Array queue feed into "unvalidated" references queue, which feed into validated references queue, which gets processed when full.

Unvalidated means references that might be nullptr or part of the permanent object pool, neither of which require processing.

Constructor & Destructor Documentation

◆ TReferenceBatcher()

template<class UnvalidatedReferenceType , class ValidatedReferenceType , class ProcessorType >
UE::GC::TReferenceBatcher< UnvalidatedReferenceType, ValidatedReferenceType, ProcessorType >::TReferenceBatcher ( FWorkerContext InContext)
inline

Member Function Documentation

◆ FlushQueues()

template<class UnvalidatedReferenceType , class ValidatedReferenceType , class ProcessorType >
FORCEINLINE_DEBUGGABLE void UE::GC::TReferenceBatcher< UnvalidatedReferenceType, ValidatedReferenceType, ProcessorType >::FlushQueues ( )
inline

◆ PushArray() [1/2]

template<class UnvalidatedReferenceType , class ValidatedReferenceType , class ProcessorType >
FORCEINLINE_DEBUGGABLE void UE::GC::TReferenceBatcher< UnvalidatedReferenceType, ValidatedReferenceType, ProcessorType >::PushArray ( FStridedReferenceArray  StridedArray)
inline

◆ PushArray() [2/2]

template<class UnvalidatedReferenceType , class ValidatedReferenceType , class ProcessorType >
FORCEINLINE_DEBUGGABLE void UE::GC::TReferenceBatcher< UnvalidatedReferenceType, ValidatedReferenceType, ProcessorType >::PushArray ( TArray< UObject * > &  Array)
inline

◆ PushReference()

template<class UnvalidatedReferenceType , class ValidatedReferenceType , class ProcessorType >
FORCEINLINE_DEBUGGABLE void UE::GC::TReferenceBatcher< UnvalidatedReferenceType, ValidatedReferenceType, ProcessorType >::PushReference ( UnvalidatedReferenceType  UnvalidatedReference)
inline

◆ PushReferenceView()

template<class UnvalidatedReferenceType , class ValidatedReferenceType , class ProcessorType >
template<class ViewType >
FORCEINLINE_DEBUGGABLE void UE::GC::TReferenceBatcher< UnvalidatedReferenceType, ValidatedReferenceType, ProcessorType >::PushReferenceView ( ViewType  View)
inline

The documentation for this class was generated from the following file: