UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VirtualAllocPageStatus.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
5
6// FVirtualAllocPageTracker is only referenced by LLM-specific code
7#define UE_VIRTUALALLOC_PAGE_STATUS_ENABLED ENABLE_LOW_LEVEL_MEM_TRACKER
8
9#if UE_VIRTUALALLOC_PAGE_STATUS_ENABLED
10
11#include "HAL/Platform.h"
12#include "HAL/PlatformMutex.h"
13#include "Math/NumericLimits.h"
14
26{
27public:
28 void Init(uint64 PageSize);
30
31 uint64* Find(uint64 Key);
32 uint64& FindOrAdd(uint64 Key, uint64 ValueIfMissing);
33
35
36private:
37 enum class EValueType
38 {
41 Active, // Any Key value <= MaxKey is an Active address.
42 };
43
44 struct FBucketEntry
45 {
46 uint64 Key;
48
49 EValueType GetValueType();
51 void SetAsUnallocated();
52 void SetAsTombstone();
53 };
54
55private:
56 void* Malloc(size_t Size);
57 void Free(void* Ptr, size_t Size);
58 void Realloc(int64 InNum);
59 FBucketEntry* FindBucket(uint64 Key);
60
61private:
62 FBucketEntry* Buckets = nullptr;
63 int64 NumBuckets = 0;
64 int64 NumActive = 0;
65 static constexpr float DesiredPopulation = 0.3f;
66 static constexpr uint64 MaxKey = MAX_uint64 - static_cast<uint64>(EValueType::Active);
67 static constexpr uint64 CollisionResolutionDeltaFraction = 32;
68};
69
82{
84
94
95private:
99 uint64 PageSize = 1;
102
103 static constexpr uint64 PagesPerGroup = sizeof(uint64) * 8;
104};
105
106#endif // UE_VIRTUALALLOC_PAGE_STATUS_ENABLED
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void Init()
Definition LockFreeList.h:4
#define MAX_uint64
Definition NumericLimits.h:22
uint32 Size
Definition VulkanMemory.cpp:4034
UE::FRecursiveMutex Mutex
Definition MeshPaintVirtualTexture.cpp:164
FPThreadsRecursiveMutex FPlatformRecursiveMutex
Definition AndroidPlatformMutex.h:12