EM_Task/CoreUObject/Private/Serialization/LoadTimeTracePrivate.h

123 lines
4.9 KiB
C
Raw Permalink Normal View History

2026-02-13 16:18:33 +08:00
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Serialization/LoadTimeTrace.h"
#if LOADTIMEPROFILERTRACE_ENABLED
class UObject;
class FName;
struct FLoadTimeProfilerTracePrivate
{
static void Init();
static void OutputStartAsyncLoading();
static void OutputSuspendAsyncLoading();
static void OutputResumeAsyncLoading();
static void OutputNewAsyncPackage(const void* AsyncPackage, const FName& PackageName);
static void OutputBeginLoadAsyncPackage(const void* AsyncPackage);
static void OutputEndLoadAsyncPackage(const void* AsyncPackage);
static void OutputDestroyAsyncPackage(const void* AsyncPackage);
static void OutputBeginRequest(uint64 RequestId);
static void OutputEndRequest(uint64 RequestId);
static void OutputPackageSummary(const void* AsyncPackage, uint32 TotalHeaderSize, uint32 ImportCount, uint32 ExportCount);
static void OutputAsyncPackageImportDependency(const void* Package, const void* ImportedPackage);
static void OutputAsyncPackageRequestAssociation(const void* AsyncPackage, uint64 RequestId);
static void OutputClassInfo(const UClass* Class, const FName& Name);
static void OutputClassInfo(const UClass* Class, const TCHAR* Name);
struct FCreateExportScope
{
FCreateExportScope(const void* AsyncPackage, const UObject* const* InObject);
~FCreateExportScope();
private:
const UObject* const* Object;
};
struct FSerializeExportScope
{
FSerializeExportScope(const UObject* Object, uint64 SerialSize);
~FSerializeExportScope();
};
struct FPostLoadExportScope
{
FPostLoadExportScope(const UObject* Object);
~FPostLoadExportScope();
};
};
#define TRACE_LOADTIME_START_ASYNC_LOADING() \
FLoadTimeProfilerTracePrivate::OutputStartAsyncLoading();
#define TRACE_LOADTIME_SUSPEND_ASYNC_LOADING() \
FLoadTimeProfilerTracePrivate::OutputSuspendAsyncLoading();
#define TRACE_LOADTIME_RESUME_ASYNC_LOADING() \
FLoadTimeProfilerTracePrivate::OutputResumeAsyncLoading();
#define TRACE_LOADTIME_BEGIN_REQUEST(RequestId) \
FLoadTimeProfilerTracePrivate::OutputBeginRequest(RequestId);
#define TRACE_LOADTIME_END_REQUEST(RequestId) \
FLoadTimeProfilerTracePrivate::OutputEndRequest(RequestId);
#define TRACE_LOADTIME_NEW_ASYNC_PACKAGE(AsyncPackage, PackageName) \
FLoadTimeProfilerTracePrivate::OutputNewAsyncPackage(AsyncPackage, PackageName)
#define TRACE_LOADTIME_BEGIN_LOAD_ASYNC_PACKAGE(AsyncPackage) \
FLoadTimeProfilerTracePrivate::OutputBeginLoadAsyncPackage(AsyncPackage)
#define TRACE_LOADTIME_END_LOAD_ASYNC_PACKAGE(AsyncPackage) \
FLoadTimeProfilerTracePrivate::OutputEndLoadAsyncPackage(AsyncPackage)
#define TRACE_LOADTIME_DESTROY_ASYNC_PACKAGE(AsyncPackage) \
FLoadTimeProfilerTracePrivate::OutputDestroyAsyncPackage(AsyncPackage);
#define TRACE_LOADTIME_PACKAGE_SUMMARY(AsyncPackage, TotalHeaderSize, ImportCount, ExportCount) \
FLoadTimeProfilerTracePrivate::OutputPackageSummary(AsyncPackage, TotalHeaderSize, ImportCount, ExportCount);
#define TRACE_LOADTIME_ASYNC_PACKAGE_REQUEST_ASSOCIATION(AsyncPackage, RequestId) \
FLoadTimeProfilerTracePrivate::OutputAsyncPackageRequestAssociation(AsyncPackage, RequestId);
#define TRACE_LOADTIME_ASYNC_PACKAGE_LINKER_ASSOCIATION(AsyncPackage, Linker) \
FLoadTimeProfilerTracePrivate::OutputAsyncPackageLinkerAssociation(AsyncPackage, Linker);
#define TRACE_LOADTIME_ASYNC_PACKAGE_IMPORT_DEPENDENCY(AsyncPackage, ImportedAsyncPackage) \
FLoadTimeProfilerTracePrivate::OutputAsyncPackageImportDependency(AsyncPackage, ImportedAsyncPackage);
#define TRACE_LOADTIME_CREATE_EXPORT_SCOPE(AsyncPackage, Object) \
FLoadTimeProfilerTracePrivate::FCreateExportScope __LoadTimeTraceCreateExportScope(AsyncPackage, Object);
#define TRACE_LOADTIME_SERIALIZE_EXPORT_SCOPE(Object, SerialSize) \
FLoadTimeProfilerTracePrivate::FSerializeExportScope __LoadTimeTraceSerializeExportScope(Object, SerialSize);
#define TRACE_LOADTIME_POSTLOAD_EXPORT_SCOPE(Object) \
FLoadTimeProfilerTracePrivate::FPostLoadExportScope __LoadTimeTracePostLoadExportScope(Object);
#define TRACE_LOADTIME_CLASS_INFO(Class, Name) \
FLoadTimeProfilerTracePrivate::OutputClassInfo(Class, Name);
#else
#define TRACE_LOADTIME_START_ASYNC_LOADING(...)
#define TRACE_LOADTIME_SUSPEND_ASYNC_LOADING(...)
#define TRACE_LOADTIME_RESUME_ASYNC_LOADING(...)
#define TRACE_LOADTIME_BEGIN_REQUEST(...)
#define TRACE_LOADTIME_END_REQUEST(...)
#define TRACE_LOADTIME_NEW_ASYNC_PACKAGE(...)
#define TRACE_LOADTIME_BEGIN_LOAD_ASYNC_PACKAGE(...)
#define TRACE_LOADTIME_END_LOAD_ASYNC_PACKAGE(...)
#define TRACE_LOADTIME_DESTROY_ASYNC_PACKAGE(...)
#define TRACE_LOADTIME_PACKAGE_SUMMARY(...)
#define TRACE_LOADTIME_ASYNC_PACKAGE_REQUEST_ASSOCIATION(...)
#define TRACE_LOADTIME_ASYNC_PACKAGE_IMPORT_DEPENDENCY(...)
#define TRACE_LOADTIME_CREATE_EXPORT_SCOPE(...)
#define TRACE_LOADTIME_SERIALIZE_EXPORT_SCOPE(...)
#define TRACE_LOADTIME_POSTLOAD_EXPORT_SCOPE(...)
#define TRACE_LOADTIME_CLASS_INFO(...)
#endif