21 static_assert(
sizeof(
Block) == 0x10);
46 std::size_t
Size(
void const* a_mem)
const override {
return *
static_cast<const std::size_t*
>(a_mem) & ~(std::size_t{ 3 } << 62); }
52 void*
Allocate(std::size_t a_size, std::size_t a_alignment);
71 static_assert(
sizeof(ScrapHeap) == 0x90);
Definition: IMemoryStore.h:8
Definition: ScrapHeap.h:10
~ScrapHeap() override
Definition: ScrapHeap.h:43
std::size_t Size(void const *a_mem) const override
Definition: ScrapHeap.h:46
void Deallocate(void *a_mem)
bool ContainsBlockImpl(const void *a_block) const override
Definition: ScrapHeap.h:48
std::uint32_t pmpBarrier
Definition: ScrapHeap.h:69
std::size_t reserveSize
Definition: ScrapHeap.h:62
void * AllocateAlignImpl(std::size_t a_size, std::uint32_t a_alignment) override
Definition: ScrapHeap.h:49
std::uint32_t freeSmallBlocks
Definition: ScrapHeap.h:67
Block * lastBlock
Definition: ScrapHeap.h:58
std::uint32_t keepPagesRequest
Definition: ScrapHeap.h:65
static constexpr auto RTTI
Definition: ScrapHeap.h:12
std::size_t totalAllocated
Definition: ScrapHeap.h:64
FreeTreeNode * freeList
Definition: ScrapHeap.h:57
std::uint32_t totalAllocatedBlocks
Definition: ScrapHeap.h:68
std::uint32_t totalFreeBlocks
Definition: ScrapHeap.h:66
void * baseAddress
Definition: ScrapHeap.h:59
std::size_t minCommit
Definition: ScrapHeap.h:63
void * commitEnd
Definition: ScrapHeap.h:61
void GetMemoryStats(MemoryStats *) override
Definition: ScrapHeap.h:47
void * endAddress
Definition: ScrapHeap.h:60
FreeBlock * smallBlocks[6]
Definition: ScrapHeap.h:56
void * Allocate(std::size_t a_size, std::size_t a_alignment)
void DeallocateAlignImpl(void *&a_block) override
Definition: ScrapHeap.h:50
bool VirtualFree(void *a_address, std::size_t a_size, std::uint32_t a_type) noexcept
constexpr auto MEM_RELEASE
Definition: KERNEL32.h:18
Definition: AbsorbEffect.h:6
constexpr REL::VariantID RTTI_ScrapHeap(690278, 398133, 0x1f5f460)
Definition: IMemoryStoreBase.h:6
Definition: ScrapHeap.h:15
Block * prev
Definition: ScrapHeap.h:19
std::size_t sizeFlags
Definition: ScrapHeap.h:18
Definition: ScrapHeap.h:24
FreeBlock * right
Definition: ScrapHeap.h:28
FreeBlock * left
Definition: ScrapHeap.h:27
Definition: ScrapHeap.h:33
FreeTreeNode * leftNode
Definition: ScrapHeap.h:37
std::size_t parentAndBlack
Definition: ScrapHeap.h:39
FreeTreeNode * rightNode
Definition: ScrapHeap.h:38
FreeTreeNode ** root
Definition: ScrapHeap.h:36