25 int32 FoundIndex = SearchFreeList(
Num, FirstNonEmptySpan);
27 if (FoundIndex ==
INDEX_NONE && !PendingFreeSpans.IsEmpty())
30 FoundIndex = SearchFreeList(
Num, FirstNonEmptySpan);
38 FLinearAllocation
FreeSpan = FreeSpans[FoundIndex];
45 if (
FreeSpan.Num ==
Num && FirstNonEmptySpan == FoundIndex)
47 FirstNonEmptySpan = FoundIndex + 1;
54 int32 StartOffset = CurrentMaxSize;
55 CurrentMaxSize = CurrentMaxSize +
Num;
57 PeakMaxSize = FMath::Max(PeakMaxSize, CurrentMaxSize);
67 PendingFreeSpans.Add(FLinearAllocation{ BaseOffset,
Num });
82 return bGrowOnly ? PeakMaxSize : CurrentMaxSize;
87 return FreeSpans.Num() + PendingFreeSpans.Num();
92 return PendingFreeSpans.Num();
97 return FreeSpans.GetAllocatedSize() + PendingFreeSpans.GetAllocatedSize();
116 struct FLinearAllocation
123 return StartOffset <
Other.StartOffset;
130 int32 CurrentMaxSize;
134 int32 FirstNonEmptySpan;
#define checkSlow(expr)
Definition AssertionMacros.h:332
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
bool operator<(const FTextFormatString &LHS, const FTextFormatString &RHS)
Definition ITextFormatArgumentModifier.h:147
Definition SpanAllocator.h:15
ENGINE_API void Empty()
Definition SpanAllocator.cpp:25
void Free(int32 BaseOffset, int32 Num=1)
Definition SpanAllocator.h:63
int32 GetMaxSize() const
Definition SpanAllocator.h:80
ENGINE_API void Consolidate()
Definition SpanAllocator.cpp:58
int32 GetNumPendingFreeSpans() const
Definition SpanAllocator.h:90
int32 GetSparselyAllocatedSize() const
Definition SpanAllocator.h:75
SIZE_T GetAllocatedSize() const
Definition SpanAllocator.h:95
int32 Allocate(int32 Num=1)
Definition SpanAllocator.h:23
int32 GetNumFreeSpans() const
Definition SpanAllocator.h:85
ENGINE_API void Reset()
Definition SpanAllocator.cpp:15
U16 Index
Definition radfft.cpp:71