1#include <game/mLib/m_allocator_dummy_heap.hpp>
2#include <game/mLib/m_allocator.hpp>
3#include <game/mLib/m_heap.hpp>
4#include <lib/egg/heap/eggFrmHeap.hpp>
9void *dummyHeapAlloc(
MEMAllocator *,
size_t) {
return nullptr; }
14mAllocatorDummyHeap_c::mAllocatorDummyHeap_c() {
18mAllocatorDummyHeap_c::~mAllocatorDummyHeap_c() {}
20int mAllocatorDummyHeap_c::getHeapKind()
const {
24void mAllocatorDummyHeap_c::initAllocator(
EGG::Allocator *allocator,
long alignment) {
25 const static MEMAllocatorFuncs funcs = { dummyHeapAlloc, dummyHeapFree };
26 allocator->mpFuncs = &funcs;
27 allocator->mpHeapHandle = mpHeapHandle;
28 allocator->mAlignment = alignment;
29 allocator->mUnused = 0;
32void *mAllocatorDummyHeap_c::alloc(
size_t bytes,
long alignment) {
36void mAllocatorDummyHeap_c::free(
void *ptr) {}
38void mAllocatorDummyHeap_c::destroy() {}
40void *mAllocatorDummyHeap_c::resizeForMBlock(
void *ptr,
size_t newSize) {
44u32 mAllocatorDummyHeap_c::getTotalFreeSize() {
48u32 mAllocatorDummyHeap_c::getAllocatableSize(
long alignment) {
52bool mAllocatorDummyHeap_c::adjust() {
65bool mAllocator_c::attach(
EGG::Heap *heap,
int alignment) {
66 if (heap ==
nullptr) {
67 heap = EGG::Heap::sCurrentHeap;
71 heap->initAllocator(
this, alignment);
75void *mAllocator_c::alloc(
size_t size) {
76 return EGG::Allocator::alloc(size);
79void mAllocator_c::free(
void *ptr) {
80 EGG::Allocator::free(ptr);
84 new(heap, 4) mAllocatorDummyHeap_c();
95 EGG::FrmHeap *heap = mHeap::createFrmHeap(size, parent, name, align, opt);
96 if (heap ==
nullptr) {
105 EGG::Heap *dummyHeap = mAllocatorDummyHeap_c::getInstance();
106 if (mpHeap != dummyHeap) {
112size_t mHeapAllocator_c::adjustFrmHeap() {
113 EGG::Heap *dummyHeap = mAllocatorDummyHeap_c::getInstance();
114 if (mpHeap == dummyHeap) {
118 EGG::FrmHeap *heap = mpHeap->toFrmHeap();
119 return mHeap::adjustFrmHeap(heap);
123 if (!
createHeap(size, parent, name, align, opt)) {
127 mHeap::saveCurrentHeap();
128 mHeap::setCurrentHeap(mpHeap);
132size_t mHeapAllocator_c::adjustFrmHeapRestoreCurrent() {
133 mHeap::restoreCurrentHeap();
135 return mHeap::adjustFrmHeap(heap);
A non-functional heap to be used when mHeapAllocator_c does not have a proper heap.
mAllocator_c()
Constructs a new allocator.
virtual ~mAllocator_c()
Destroys the allocator.
void destroyHeap()
destroys the underlying heap and replaces it with the dummy heap;
virtual ~mHeapAllocator_c()
Destroys the heap allocator.
bool createHeapRestoreCurrent(size_t size, EGG::Heap *parent, const char *name, u32 align, u32 opt)
mHeapAllocator_c()
Constructs a new heap allocator.
bool createHeap(size_t size, EGG::Heap *parent, const char *name, u32 align, u32 opt)