90#define VERIFY_WEAK_ASYNC_PACKAGE_PTRS (0)
92#if VERIFY_WEAK_ASYNC_PACKAGE_PTRS
117#define USE_IMPLICIT_ARCS (1)
167 check(Result.ImportOrExportIndex.IsNull());
373 return LoadPercentage;
417 return DependencyRefCount.
GetValue();
428 return bLoadHasFinished;
452 return bLoadHasFailed;
458 bThreadedLoadingFinished =
true;
464 return bThreadedLoadingFinished;
486 return ReentryCount > 0;
516 return DeferredClusterObjects.
Num() > 0;
532 struct FCompletionCallback
538 FCompletionCallback()
557 bool IsFullyLoadedObj(
UObject* Obj);
576 int32 LoadImportIndex;
584 int32 PreLoadSortIndex;
586 int32 FinishExternalReadDependenciesIndex;
590 int32 DeferredPostLoadIndex;
592 int32 PostLoadInstanceIndex;
594 int32 DeferredFinalizeIndex;
596 int32 DeferredClusterIndex;
602 bool bUseFullTimeLimit;
604 bool bTimeLimitExceeded;
608 bool bLoadHasFinished;
610 bool bThreadedLoadingFinished;
612 bool bCreatedLinkerRoot;
614 double TickStartTime;
616 UObject* LastObjectWorkWasPerformedOn;
618 const TCHAR* LastTypeOfWorkPerformed;
620 double LoadStartTime;
622 float LoadPercentage;
646 std::atomic<int32> ReentryCount;
775 LastObjectWorkWasPerformedOn = LinkerRoot;
783 return AsyncLoadingThread;
789#if PERF_TRACK_DETAILED_ASYNC_STATS
847 bool GiveUpTimeSlice();
853 bool IsTimeLimitExceeded();
860 void BeginAsyncLoad();
904 EAsyncPackageState::Type CreateExports();
961 void FreeReferencedImports();
966 void UpdateLoadPercentage();
968#if PERF_TRACK_DETAILED_ASYNC_STATS
EAllowShrinking
Definition AllowShrinking.h:10
#define UE_ALLOWSHRINKING_BOOL_DEPRECATED(FunctionName)
Definition AllowShrinking.h:31
#define check(expr)
Definition AssertionMacros.h:314
FUnsafeWeakAsyncPackagePtr FCheckedWeakAsyncPackagePtr
Definition AsyncLoading.h:95
EEventLoadNode
Definition AsyncLoading.h:100
@ ImportOrExport_Serialize
@ Package_ExportsSerialized
EAsyncPackageLoadingState
Definition AsyncLoading.h:31
@ WaitingForImportPackages
@ ProcessNewImportsAndExports
#define UE_BUILD_TEST
Definition Build.h:17
#define UE_BUILD_SHIPPING
Definition Build.h:20
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
return true
Definition ExternalRpcRegistry.cpp:601
bool operator<(const FTextFormatString &LHS, const FTextFormatString &RHS)
Definition ITextFormatArgumentModifier.h:147
void Init()
Definition LockFreeList.h:4
decltype(auto) Visit(Func &&Callable, Variants &&... Args)
Definition TVariant.h:271
int32 TAsyncLoadPriority
Definition UObjectGlobals.h:726
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition AsyncLoadingThread.h:235
Definition GCObject.h:128
Definition AsyncLoading.h:330
void HeapPop(int32 &OutItem, EAllowShrinking AllowShrinking=EAllowShrinking::Default)
Definition AsyncLoading.cpp:1718
Definition LinkerInstancingContext.h:99
Definition LinkerLoad.h:124
Definition NameTypes.h:617
Definition ObjectResource.h:44
UE_FORCEINLINE_HINT bool IsImport() const
Definition ObjectResource.h:68
int32 ToExport() const
Definition ObjectResource.h:89
int32 ToImport() const
Definition ObjectResource.h:83
UE_FORCEINLINE_HINT bool IsNull() const
Definition ObjectResource.h:78
Definition PackagePath.h:89
Definition UObjectGlobals.h:2492
Definition ThreadSafeCounter.h:14
int32 GetValue() const
Definition ThreadSafeCounter.h:120
Definition AsyncPackageLoader.h:88
Definition AsyncFileHandle.h:31
Definition ArrayView.h:139
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition UnrealString.h.inl:34
Definition UniquePtr.h:107
Type
Definition UObjectGlobals.h:694
Type
Definition UObjectGlobals.h:1141
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition AsyncLoading.h:309
bool bUseFullTimeLimit
Definition AsyncLoading.h:315
double TickStartTime
Definition AsyncLoading.h:310
UObject * OutLastObjectWorkWasPerformedOn
Definition AsyncLoading.h:312
const TCHAR * OutLastTypeOfWorkPerformed
Definition AsyncLoading.h:311
bool bUseTimeLimit
Definition AsyncLoading.h:314
FAsyncLoadEventArgs()
Definition AsyncLoading.h:317
float TimeLimit
Definition AsyncLoading.h:313
Definition AsyncPackage.h:18
int32 RequestID
Definition AsyncPackage.h:20
FPackagePath PackagePath
Definition AsyncPackage.h:24
FName Name
Definition AsyncPackage.h:22
TAsyncLoadPriority Priority
Definition AsyncPackage.h:30
Definition AsyncLoading.cpp:548
Definition AsyncLoading.h:673
int32 LastExportCovered
Definition AsyncLoading.h:677
TArray< int32 > ExportsToRead
Definition AsyncLoading.h:678
int64 BytesToRead
Definition AsyncLoading.h:675
FExportIORequest()
Definition AsyncLoading.h:680
int32 FirstExportCovered
Definition AsyncLoading.h:676
int64 Offset
Definition AsyncLoading.h:674
Definition AsyncLoading.h:345
bool HasThreadedLoadingFinished() const
Definition AsyncLoading.h:462
FORCEINLINE float GetLoadPercentage() const
Definition AsyncLoading.h:371
int32 SerialNumber
Definition AsyncLoading.h:663
void DetachLinker()
Definition AsyncLoading.cpp:5815
FORCEINLINE int32 GetDependencyRefCount() const
Definition AsyncLoading.h:415
FImportOrImportIndexArray ExportsThatCanBeCreated
Definition AsyncLoading.h:667
int32 ImportAddNodeIndex
Definition AsyncLoading.h:704
T * CastEventDrivenIndexToObject(FPackageIndex Index, bool bCheckSerialized, FPackageIndex DumpIndex=FPackageIndex())
Definition AsyncLoading.h:747
void Event_SetupExports()
Definition AsyncLoading.cpp:2663
void MarkRequestIDsAsComplete()
Definition AsyncLoading.cpp:5780
int64 PrecacheRequestReady(IAsyncReadRequest *Req)
Definition AsyncLoading.cpp:3707
void ConditionalQueueProcessPostloadWait()
Definition AsyncLoading.cpp:2793
void DoneAddingPrerequistesFireIfNone(EEventLoadNode Phase, FPackageIndex ImportOrExportIndex=FPackageIndex(), bool bWasHeldForLater=false)
Definition AsyncLoading.cpp:4105
void FireNode(FEventLoadNodePtr &NodeToFire)
Definition AsyncLoading.cpp:4152
TArray< IAsyncReadRequest * > ReadyPrecacheRequests
Definition AsyncLoading.h:670
FORCEINLINE void SetPriority(TAsyncLoadPriority InPriority)
Definition AsyncLoading.h:444
void SetTimeLimit(FAsyncLoadEventArgs &Args, const TCHAR *WorkType)
Definition AsyncLoading.h:769
void Event_FinishLinker()
Definition AsyncLoading.cpp:1878
bool HasClusterObjects() const
Definition AsyncLoading.h:514
void ResetLoader()
Definition AsyncLoading.cpp:5798
FImportOrImportIndexArray ExportsThatCanBeSerialized
Definition AsyncLoading.h:669
virtual void AddReferencedObjects(FReferenceCollector &Collector) override
Definition AsyncLoading.cpp:5716
bool IsDependencyOf(int32 RequestID)
Definition AsyncLoading.cpp:4632
bool bProcessImportsAndExportsInFlight
Definition AsyncLoading.h:707
EAsyncPackageState::Type ProcessImportsAndExports_Event()
Definition AsyncLoading.cpp:3759
void Event_SetupImports()
Definition AsyncLoading.cpp:2325
FORCEINLINE bool HasLoadFailed() const
Definition AsyncLoading.h:450
bool AreAllDependenciesFullyLoaded(TSet< UPackage * > &VisitedPackages)
Definition AsyncLoading.cpp:4658
UPackage * GetLoadedPackage()
Definition AsyncLoading.cpp:7343
void Event_StartImportPackages()
Definition AsyncLoading.cpp:2026
void MakeNextPrecacheRequestCurrent()
Definition AsyncLoading.cpp:3715
TSet< FWeakAsyncPackagePtr > PackagesIMayBeWaitingForBeforePostload
Definition AsyncLoading.h:697
FUObjectSerializeContext * GetSerializeContext()
Definition AsyncLoading.cpp:852
void RemoveAllNodes()
Definition AsyncLoading.cpp:4141
void EventDrivenCreateExport(int32 LocalExportIndex)
Definition AsyncLoading.cpp:3168
void Event_ProcessImportsAndExports()
Definition AsyncLoading.cpp:2901
TSet< FWeakAsyncPackagePtr > PackagesIAmWaitingForBeforePostload
Definition AsyncLoading.h:699
void LinkImport(int32 LocalImportIndex)
Definition AsyncLoading.cpp:2921
EAsyncPackageState::Type LoadImports_Event()
Definition AsyncLoading.cpp:2114
void ConditionalQueueProcessImportsAndExports(bool bRequeueForTimeout=false)
Definition AsyncLoading.cpp:2771
int64 CurrentBlockBytes
Definition AsyncLoading.h:692
void EventDrivenSerializeExport(int32 LocalExportIndex)
Definition AsyncLoading.cpp:3457
FImportOrImportIndexArray ImportsThatAreNowCreated
Definition AsyncLoading.h:665
double GetLoadStartTime() const
Definition AsyncLoading.cpp:5790
FEventLoadNodeArray EventNodeArray
Definition AsyncLoading.h:757
void Cancel()
Definition AsyncLoading.cpp:7349
bool bAllExportsSerialized
Definition AsyncLoading.h:709
EAsyncPackageState::Type PostLoadDeferredObjects(double InTickStartTime, bool bInUseTimeLimit, double InOutTimeLimit)
Definition AsyncLoading.cpp:7002
bool IsBeingProcessedRecursively() const
Definition AsyncLoading.h:484
UObject * EventDrivenIndexToObject(FPackageIndex Index, bool bCheckSerialized, FPackageIndex DumpIndex=FPackageIndex())
Definition AsyncLoading.cpp:3097
TMap< TPair< FName, FPackageIndex >, FPackageIndex > ObjectNameWithOuterToExport
Definition AsyncLoading.h:695
FAsyncLoadingThread & GetOwnerThread()
Definition AsyncLoading.h:781
void RemoveNode(EEventLoadNode Phase, FPackageIndex ImportOrExportIndex=FPackageIndex())
Definition AsyncLoading.cpp:4116
void Event_ExportsDone()
Definition AsyncLoading.cpp:3896
void EventDrivenLoadingComplete()
Definition AsyncLoading.cpp:4070
void AddArc(FEventLoadNodePtr &PrereqisiteNode, FEventLoadNodePtr &DependentNode)
Definition AsyncLoading.cpp:4136
FORCEINLINE bool HasFinishedLoading() const
Definition AsyncLoading.h:426
TMap< IAsyncReadRequest *, FAsyncPackage::FExportIORequest > PrecacheRequests
Definition AsyncLoading.h:689
EAsyncPackageState::Type SetupImports_Event()
Definition AsyncLoading.cpp:2376
FORCEINLINE const FPackagePath & GetPackagePath() const
Definition AsyncLoading.h:407
FORCEINLINE UPackage * GetLinkerRoot() const
Definition AsyncLoading.h:420
void MarkNewObjectForLoadIfItIsAnExport(UObject *Object)
Definition AsyncLoading.cpp:3444
~FAsyncPackage()
Definition AsyncLoading.cpp:5683
void DumpDependencies(const TCHAR *Label, UObject *Obj)
Definition AsyncLoading.cpp:3006
void FlushObjectLinkerCache()
Definition AsyncLoading.cpp:5827
bool bProcessPostloadWaitInFlight
Definition AsyncLoading.h:708
EAsyncPackageLoadingState AsyncPackageLoadingState
Definition AsyncLoading.h:662
bool AnyImportsAndExportWorkOutstanding()
Definition AsyncLoading.cpp:2761
virtual FString GetReferencerName() const override
Definition AsyncLoading.h:491
FORCEINLINE const FName & GetPackageName() const
Definition AsyncLoading.h:399
void SetDependencyRootPackage(FAsyncPackage *InDependencyRootPackage)
Definition AsyncLoading.h:478
FImportOrImportIndexArray ExportsThatCanHaveIOStarted
Definition AsyncLoading.h:668
FORCEINLINE TAsyncLoadPriority GetPriority() const
Definition AsyncLoading.h:438
int32 ExportAddNodeIndex
Definition AsyncLoading.h:705
void NodeWillBeFiredExternally(EEventLoadNode Phase, FPackageIndex ImportOrExportIndex=FPackageIndex())
Definition AsyncLoading.cpp:4126
FORCEINLINE int32 GetRequestID() const
Definition AsyncLoading.h:432
TSet< FWeakAsyncPackagePtr > OtherPackagesWaitingForMeBeforePostload
Definition AsyncLoading.h:700
EAsyncPackageState::Type TickAsyncPackage(bool bUseTimeLimit, bool bInbUseFullTimeLimit, float &InOutTimeLimit)
Definition AsyncLoading.cpp:5935
FObjectImport * FindExistingImport(int32 LocalImportIndex)
Definition AsyncLoading.cpp:2065
void Event_CreateLinker()
Definition AsyncLoading.cpp:1813
void CallCompletionCallbacks(bool bInternalOnly, EAsyncLoadingResult::Type LoadingResult)
Definition AsyncLoading.cpp:7324
void FlushPrecacheBuffer()
Definition AsyncLoading.cpp:3747
TMap< int32, IAsyncReadRequest * > ExportIndexToPrecacheRequest
Definition AsyncLoading.h:690
int64 CurrentBlockOffset
Definition AsyncLoading.h:691
FEventLoadNodePtr AddNode(EEventLoadNode Phase, FPackageIndex ImportOrExportIndex=FPackageIndex(), bool bHoldForLater=false, int32 NumImplicitPrereqs=0)
Definition AsyncLoading.cpp:4094
void EmptyReferencedObjects()
Definition AsyncLoading.cpp:5742
EAsyncPackageState::Type SetupExports_Event()
Definition AsyncLoading.cpp:2804
FImportOrImportIndexArray ImportsThatAreNowSerialized
Definition AsyncLoading.h:666
TArray< FCheckedWeakAsyncPackagePtr > PackagesWaitingToLinkImports
Definition AsyncLoading.h:702
void AddCompletionCallback(TUniquePtr< FLoadPackageAsyncDelegate > &&Callback, bool bInternal)
Definition AsyncLoading.cpp:7416
void CloseDelayedLinkers()
Definition AsyncLoading.cpp:7286
void ThreadedLoadingHasFinished()
Definition AsyncLoading.h:456
void AddObjectReference(UObject *InObject)
Definition AsyncLoading.cpp:5726
void StartPrecacheRequest()
Definition AsyncLoading.cpp:3585
void AddRequestID(int32 Id)
Definition AsyncLoading.cpp:5759
void Event_StartPostload()
Definition AsyncLoading.cpp:4041
TSet< int32 > ExportsInThisBlock
Definition AsyncLoading.h:693
FString GetDebuggingPath(FPackageIndex Idx)
Definition AsyncLoading.cpp:1048
void Event_ProcessPostloadWait()
Definition AsyncLoading.cpp:3926
Definition AsyncLoading.cpp:118
Definition AsyncLoading.h:290
void DoneAddingPrerequistesFireIfNone(FEventLoadNodePtr &NewNode, bool bWasHeldForLater=false)
Definition AsyncLoading.cpp:1333
void AddArc(FEventLoadNodePtr &PrereqisiteNode, FEventLoadNodePtr &DependentNode)
Definition AsyncLoading.cpp:1221
void NodeWillBeFiredExternally(FEventLoadNodePtr &NodeThatWasFired)
Definition AsyncLoading.cpp:1325
bool CheckForCyclesInner(const TMultiMap< FEventLoadNodePtr, FEventLoadNodePtr > &Arcs, TSet< FEventLoadNodePtr > &Visited, TSet< FEventLoadNodePtr > &Stack, const FEventLoadNodePtr &Visit)
Definition AsyncLoading.cpp:1352
void AddNode(FEventLoadNodePtr &NewNode, bool bHoldForLater=false, int32 NumImplicitPrereqs=0)
Definition AsyncLoading.cpp:1204
TArray< int32 > IndicesToFire
Definition AsyncLoading.h:292
FEventLoadNode & GetNode(FEventLoadNodePtr &NodeToGet)
Definition AsyncLoading.cpp:1197
void CheckForCycles(bool bDoSlowTests=(!UE_BUILD_SHIPPING &&!UE_BUILD_TEST))
Definition AsyncLoading.cpp:1377
void RemoveNode(FEventLoadNodePtr &NodeToRemove)
Definition AsyncLoading.cpp:1231
FEventLoadNodeArray & GetArray(FEventLoadNodePtr &Node)
Definition AsyncLoading.cpp:1192
TSet< FCheckedWeakAsyncPackagePtr > PackagesWithNodes
Definition AsyncLoading.h:291
Definition AsyncLoading.h:213
FEventLoadNode PackageNodes[int(EEventLoadNode::Package_NumPhases)]
Definition AsyncLoading.h:214
void Shutdown()
Definition AsyncLoading.cpp:1140
FEventLoadNodeArray()
Definition AsyncLoading.h:223
int32 NumExports
Definition AsyncLoading.h:219
int32 NumImports
Definition AsyncLoading.h:218
int32 TotalNumberOfImportExportNodes
Definition AsyncLoading.h:216
bool RemoveNode(FEventLoadNodePtr Node)
Definition AsyncLoading.h:242
int32 TotalNumberOfNodesAdded
Definition AsyncLoading.h:217
void GetAddedNodes(TArray< FEventLoadNodePtr > &OutAddedNodes, FAsyncPackage *Owner)
Definition AsyncLoading.cpp:1146
bool AddNode(FEventLoadNodePtr Node)
Definition AsyncLoading.h:235
int32 OffsetToImports
Definition AsyncLoading.h:220
FORCEINLINE FEventLoadNode & GetNode(FEventLoadNodePtr Node, bool bCheckAdded=true)
Definition AsyncLoading.h:249
FEventLoadNode * Array
Definition AsyncLoading.h:215
int32 OffsetToExports
Definition AsyncLoading.h:221
Definition AsyncLoading.h:128
FPackageIndex ImportOrExportIndex
Definition AsyncLoading.h:130
FORCEINLINE bool operator==(const FEventLoadNodePtr &Other) const
Definition AsyncLoading.h:148
FEventLoadNodePtr()
Definition AsyncLoading.h:133
FORCEINLINE int32 NumImplicitArcs()
Definition AsyncLoading.h:155
EEventLoadNode Phase
Definition AsyncLoading.h:131
FORCEINLINE FEventLoadNodePtr GetImplicitArc()
Definition AsyncLoading.h:159
FString HumanReadableStringForDebugging() const
Definition AsyncLoading.cpp:1069
FORCEINLINE friend uint32 GetTypeHash(const FEventLoadNodePtr &NodePtr)
Definition AsyncLoading.h:137
FCheckedWeakAsyncPackagePtr WaitingPackage
Definition AsyncLoading.h:129
Definition AsyncLoading.h:192
FORCEINLINE FEventLoadNode()
Definition AsyncLoading.h:203
bool bAddedToGraph
Definition AsyncLoading.h:202
TArray< FEventLoadNodePtr > TNodesWaitingForMeArray
Definition AsyncLoading.h:194
TNodesWaitingForMeArray NodesWaitingForMe
Definition AsyncLoading.h:199
bool bFired
Definition AsyncLoading.h:201
int32 NumPrerequistes
Definition AsyncLoading.h:200
Definition AsyncLoadingThread.h:172
Definition ObjectResource.h:444
Definition AsyncLoading.h:983
~FScopedAsyncPackageEvent()
Definition AsyncLoading.cpp:1746
IAsyncPackageLoader * PreviousAsyncPackageLoader
Definition AsyncLoading.h:988
FAsyncPackage * Package
Definition AsyncLoading.h:985
FAsyncPackage * PreviousPackage
Definition AsyncLoading.h:987
Definition UObjectThreadContext.h:140
Definition AsyncLoading.h:47
FAsyncPackage * Package
Definition AsyncLoading.h:48
FORCEINLINE FAsyncPackage & GetPackage() const
Definition AsyncLoading.h:53
FORCEINLINE friend uint32 GetTypeHash(const FUnsafeWeakAsyncPackagePtr &WeakPtr)
Definition AsyncLoading.h:58
FUnsafeWeakAsyncPackagePtr(FAsyncPackage *InPackage=nullptr)
Definition AsyncLoading.h:49
FName HumanReadableStringForDebugging() const
Definition AsyncLoading.cpp:1026
FORCEINLINE bool operator==(const FUnsafeWeakAsyncPackagePtr &Other) const
Definition AsyncLoading.h:62
Definition AsyncLoading.h:71
FName HumanReadableStringForDebugging() const
Definition AsyncLoading.h:84
FName PackageName
Definition AsyncLoading.h:72
FAsyncPackage & GetPackage() const
Definition AsyncLoading.cpp:1041
FORCEINLINE bool operator==(const FWeakAsyncPackagePtr &Other) const
Definition AsyncLoading.h:80
FORCEINLINE friend uint32 GetTypeHash(const FWeakAsyncPackagePtr &WeakPtr)
Definition AsyncLoading.h:76
int32 SerialNumber
Definition AsyncLoading.h:73
Definition Optional.h:131