mirror of
https://github.com/encounter/tp.git
synced 2026-07-11 06:18:46 -07:00
JKRSolidHeap (#69)
* JKRSolidHeap progress * JKRSolidHeap, added const to virtual functions, and JKRHeap::TState * fixed braces * fix function overload * clang-format Co-authored-by: Julgodis <> Co-authored-by: Pheenoh <pheenoh@gmail.com>
This commit is contained in:
co-authored by
Julgodis <>
Pheenoh
parent
0cf65151b3
commit
88fca194f8
@@ -28,8 +28,8 @@ void JKRAssertHeap::do_destroy(void) {
|
||||
this->~JKRAssertHeap();
|
||||
}
|
||||
|
||||
u32 JKRAssertHeap::getHeapType(void) {
|
||||
return 0x41535448; // FOURCC("ASTH")
|
||||
u32 JKRAssertHeap::getHeapType(void) const {
|
||||
return 'ASTH';
|
||||
}
|
||||
|
||||
bool JKRAssertHeap::check(void) {
|
||||
@@ -48,7 +48,7 @@ u8 JKRAssertHeap::do_changeGroupID(u8) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 JKRAssertHeap::do_getCurrentGroupId(void) {
|
||||
u8 JKRAssertHeap::do_getCurrentGroupId(void) const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -68,18 +68,18 @@ s32 JKRAssertHeap::do_resize(void*, u32) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 JKRAssertHeap::do_getSize(void*) {
|
||||
s32 JKRAssertHeap::do_getSize(void*) const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 JKRAssertHeap::do_getFreeSize(void) {
|
||||
s32 JKRAssertHeap::do_getFreeSize(void) const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void* JKRAssertHeap::do_getMaxFreeBlock(void) {
|
||||
void* JKRAssertHeap::do_getMaxFreeBlock(void) const {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
s32 JKRAssertHeap::do_getTotalFreeSize(void) {
|
||||
s32 JKRAssertHeap::do_getTotalFreeSize(void) const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -86,22 +86,22 @@ asm s32 JKRExpHeap::do_resize(void*, u32) {
|
||||
#include "JSystem/JKernel/JKRExpHeap/asm/func_802CF978.s"
|
||||
}
|
||||
|
||||
asm s32 JKRExpHeap::do_getSize(void*) {
|
||||
asm s32 JKRExpHeap::do_getSize(void*) const {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRExpHeap/asm/func_802CFB24.s"
|
||||
}
|
||||
|
||||
asm s32 JKRExpHeap::do_getFreeSize(void) {
|
||||
asm s32 JKRExpHeap::do_getFreeSize(void) const {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRExpHeap/asm/func_802CFBA4.s"
|
||||
}
|
||||
|
||||
asm void* JKRExpHeap::do_getMaxFreeBlock(void) {
|
||||
asm void* JKRExpHeap::do_getMaxFreeBlock(void) const {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRExpHeap/asm/func_802CFC10.s"
|
||||
}
|
||||
|
||||
asm s32 JKRExpHeap::do_getTotalFreeSize(void) {
|
||||
asm s32 JKRExpHeap::do_getTotalFreeSize(void) const {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRExpHeap/asm/func_802CFC84.s"
|
||||
}
|
||||
@@ -200,12 +200,12 @@ asm bool JKRExpHeap::state_compare(JKRHeap::TState const&, JKRHeap::TState const
|
||||
#include "JSystem/JKernel/JKRExpHeap/asm/func_802D09E0.s"
|
||||
}
|
||||
|
||||
asm u32 JKRExpHeap::getHeapType(void) {
|
||||
asm u32 JKRExpHeap::getHeapType(void) const {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRExpHeap/asm/func_802D0A10.s"
|
||||
}
|
||||
|
||||
asm u8 JKRExpHeap::do_getCurrentGroupId(void) {
|
||||
asm u8 JKRExpHeap::do_getCurrentGroupId(void) const {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRExpHeap/asm/func_802D0A1C.s"
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@ JKRHeap::JKRHeap(void* data, u32 size, JKRHeap* parent, bool errorFlag)
|
||||
: JKRDisposer(), mChildTree(this), mDisposerList() {
|
||||
OSInitMutex(&mMutex);
|
||||
mSize = size;
|
||||
mStart = (u32)data;
|
||||
mEnd = (u32)data + size;
|
||||
mStart = (u8*)data;
|
||||
mEnd = (u8*)data + size;
|
||||
|
||||
if (parent == NULL) {
|
||||
becomeSystemHeap();
|
||||
@@ -68,6 +68,7 @@ asm JKRHeap::~JKRHeap() {
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CE264.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
bool JKRHeap::initArena(char** memory, u32* size, int param_3) {
|
||||
u32 ram_start;
|
||||
u32 ram_end;
|
||||
@@ -176,19 +177,19 @@ s32 JKRHeap::getSize(void* ptr, JKRHeap* heap) {
|
||||
return heap->getSize(ptr);
|
||||
}
|
||||
|
||||
s32 JKRHeap::getSize(void* ptr) {
|
||||
s32 JKRHeap::getSize(void* ptr) const {
|
||||
return do_getSize(ptr);
|
||||
}
|
||||
|
||||
s32 JKRHeap::getFreeSize() {
|
||||
s32 JKRHeap::getFreeSize() const {
|
||||
return do_getFreeSize();
|
||||
}
|
||||
|
||||
void* JKRHeap::getMaxFreeBlock() {
|
||||
void* JKRHeap::getMaxFreeBlock() const {
|
||||
return do_getMaxFreeBlock();
|
||||
}
|
||||
|
||||
s32 JKRHeap::getTotalFreeSize() {
|
||||
s32 JKRHeap::getTotalFreeSize() const {
|
||||
return do_getTotalFreeSize();
|
||||
}
|
||||
|
||||
@@ -198,7 +199,7 @@ u8 JKRHeap::changeGroupID(u8 param_1) {
|
||||
|
||||
// "not/nor" instruction in the wrong place
|
||||
#ifdef NONMATCHING
|
||||
s32 JKRHeap::getMaxAllocatableSize(int alignment) {
|
||||
s32 JKRHeap::getMaxAllocatableSize(int alignment) const {
|
||||
u32 maxFreeBlock = (u32)getMaxFreeBlock();
|
||||
s32 freeSize = getFreeSize();
|
||||
|
||||
@@ -208,7 +209,7 @@ s32 JKRHeap::getMaxAllocatableSize(int alignment) {
|
||||
return alignedSize;
|
||||
}
|
||||
#else
|
||||
asm s32 JKRHeap::getMaxAllocatableSize(int alignment) {
|
||||
asm u32 JKRHeap::getMaxAllocatableSize(int alignment) const {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CE7DC.s"
|
||||
}
|
||||
@@ -412,3 +413,27 @@ void operator delete(void* ptr) {
|
||||
void operator delete[](void* ptr) {
|
||||
JKRHeap::free(ptr, NULL);
|
||||
}
|
||||
|
||||
void JKRHeap::state_register(JKRHeap::TState* p, u32 id) const {
|
||||
JUT_ASSERT(p != 0);
|
||||
JUT_ASSERT(p->getHeap() == this);
|
||||
}
|
||||
|
||||
bool JKRHeap::state_compare(JKRHeap::TState const& r1, JKRHeap::TState const& r2) const {
|
||||
JUT_ASSERT(r1.getHeap() == r2.getHeap());
|
||||
return r1.getCheckCode() == r2.getCheckCode();
|
||||
}
|
||||
|
||||
void JKRHeap::state_dump(JKRHeap::TState const& p) const {
|
||||
LOGF("check-code : 0x%08x", p.getCheckCode());
|
||||
LOGF("id : 0x%08x", p.getId());
|
||||
LOGF("used size : %u", p.getUsedSize());
|
||||
}
|
||||
|
||||
u8 JKRHeap::do_changeGroupID(u8 newGroupID) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 JKRHeap::do_getCurrentGroupId() const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,112 +1,301 @@
|
||||
#include "JSystem/JKernel/JKRSolidHeap/JKRSolidHeap.h"
|
||||
#include "global.h"
|
||||
|
||||
asm void JKRSolidHeap::create(unsigned long, JKRHeap*, bool) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D0A24.s"
|
||||
JKRSolidHeap* JKRSolidHeap::create(u32 size, JKRHeap* heap, bool useErrorHandler) {
|
||||
if (!heap) {
|
||||
heap = getRootHeap();
|
||||
}
|
||||
|
||||
if (size == 0xffffffff) {
|
||||
size = heap->getMaxAllocatableSize(0x10);
|
||||
}
|
||||
|
||||
u32 alignedSize = ALIGN_PREV(size, 0x10);
|
||||
u32 solidHeapSize = ALIGN_NEXT(sizeof(JKRSolidHeap), 0x10);
|
||||
if (alignedSize < solidHeapSize)
|
||||
return NULL;
|
||||
|
||||
JKRSolidHeap* solidHeap = (JKRSolidHeap*)JKRAllocFromHeap(heap, alignedSize, 0x10);
|
||||
void* dataPtr = (u8*)solidHeap + solidHeapSize;
|
||||
if (!solidHeap)
|
||||
return NULL;
|
||||
|
||||
solidHeap =
|
||||
new (solidHeap) JKRSolidHeap(dataPtr, alignedSize - solidHeapSize, heap, useErrorHandler);
|
||||
return solidHeap;
|
||||
}
|
||||
|
||||
asm void JKRSolidHeap::do_destroy(void) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D0AD0.s"
|
||||
void JKRSolidHeap::do_destroy(void) {
|
||||
JKRHeap* parent = getParent();
|
||||
if (parent) {
|
||||
this->~JKRSolidHeap();
|
||||
JKRFreeToHeap(parent, this);
|
||||
}
|
||||
}
|
||||
|
||||
asm JKRSolidHeap::JKRSolidHeap(void*, unsigned long, JKRHeap*, bool) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D0B30.s"
|
||||
JKRSolidHeap::JKRSolidHeap(void* start, u32 size, JKRHeap* parent, bool useErrorHandler)
|
||||
: JKRHeap(start, size, parent, useErrorHandler) {
|
||||
mFreeSize = mSize;
|
||||
mSolidHead = (u8*)mStart;
|
||||
mSolidTail = (u8*)mEnd;
|
||||
field_0x78 = NULL;
|
||||
}
|
||||
|
||||
asm JKRSolidHeap::~JKRSolidHeap(void) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D0B8C.s"
|
||||
JKRSolidHeap::~JKRSolidHeap(void) {
|
||||
dispose();
|
||||
}
|
||||
|
||||
asm void JKRSolidHeap::adjustSize(void) {
|
||||
#ifdef NONMATCHING
|
||||
s32 JKRSolidHeap::adjustSize(void) {
|
||||
JKRHeap* parent = getParent();
|
||||
if (parent) {
|
||||
lock();
|
||||
s32 start = mStart;
|
||||
s32 newSize = (s32)this->mSolidHead - ALIGN_NEXT(start, 0x20);
|
||||
s32 newSizeThis = newSize + (start - (s32)this);
|
||||
s32 actualSize = parent->resize(this, newSizeThis);
|
||||
if (actualSize != -1) {
|
||||
mFreeSize = 0;
|
||||
mSize = newSize;
|
||||
mEnd = mStart + mSize;
|
||||
mSolidHead = (void*)mEnd;
|
||||
mSolidTail = (void*)mEnd;
|
||||
}
|
||||
|
||||
unlock();
|
||||
|
||||
return newSizeThis;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
asm s32 JKRSolidHeap::adjustSize(void) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D0BF4.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
asm void* JKRSolidHeap::do_alloc(unsigned long, int) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D0CB0.s"
|
||||
void* JKRSolidHeap::do_alloc(u32 size, int alignment) {
|
||||
if (alignment != 0) {
|
||||
JUT_ASSERT(abs(alignment));
|
||||
JUT_ASSERT(isPower2(alignment));
|
||||
}
|
||||
|
||||
lock();
|
||||
|
||||
if (size < 4) {
|
||||
size = 4;
|
||||
}
|
||||
|
||||
void* ptr;
|
||||
if (alignment >= 0) {
|
||||
ptr = allocFromHead(size, alignment < 4 ? 4 : alignment);
|
||||
} else {
|
||||
if (-alignment < 4) {
|
||||
alignment = 4;
|
||||
} else {
|
||||
alignment = -alignment;
|
||||
}
|
||||
|
||||
ptr = allocFromTail(size, alignment);
|
||||
}
|
||||
|
||||
unlock();
|
||||
return ptr;
|
||||
}
|
||||
|
||||
asm void JKRSolidHeap::allocFromHead(unsigned long, int) {
|
||||
#ifdef NONMATCHING
|
||||
void* JKRSolidHeap::allocFromHead(u32 size, int alignment) {
|
||||
void* ptr;
|
||||
u32 offset;
|
||||
u32 alignedSize;
|
||||
u32 alignedStart;
|
||||
u32 totalSize;
|
||||
alignedSize = ALIGN_NEXT(size, 0x4);
|
||||
ptr = NULL;
|
||||
alignedStart = (alignment - 1 + (u32)mSolidHead) & ~(alignment - 1);
|
||||
offset = alignedStart - (u32)mSolidHead;
|
||||
totalSize = alignedSize + offset;
|
||||
if (totalSize <= mFreeSize) {
|
||||
ptr = (void*)alignedStart;
|
||||
mSolidHead += totalSize;
|
||||
mFreeSize -= totalSize;
|
||||
} else {
|
||||
// "allocFromHead: cannot alloc memory (0x%x byte).\n"
|
||||
const char* format = lbl_8039CE50;
|
||||
JUTWarningConsole_f(format, totalSize);
|
||||
if (getErrorFlag() == true) {
|
||||
callErrorHandler(this, alignedSize, alignment);
|
||||
}
|
||||
}
|
||||
|
||||
return ptr;
|
||||
}
|
||||
#else
|
||||
asm void* JKRSolidHeap::allocFromHead(u32, int) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D0D58.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
asm void JKRSolidHeap::allocFromTail(unsigned long, int) {
|
||||
asm void* JKRSolidHeap::allocFromTail(u32, int) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D0E20.s"
|
||||
}
|
||||
|
||||
asm void JKRSolidHeap::do_free(void*) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D0EE4.s"
|
||||
void JKRSolidHeap::do_free(void* ptr) {
|
||||
// "free: cannot free memory block (%08x)\n"
|
||||
const char* format = lbl_8039CE50 + 0x62;
|
||||
JUTWarningConsole_f(format, ptr);
|
||||
}
|
||||
|
||||
asm void JKRSolidHeap::do_freeAll(void) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D0F14.s"
|
||||
void JKRSolidHeap::do_freeAll(void) {
|
||||
lock();
|
||||
|
||||
this->JKRHeap::callAllDisposer();
|
||||
mFreeSize = mSize;
|
||||
mSolidHead = (u8*)mStart;
|
||||
mSolidTail = (u8*)mEnd;
|
||||
field_0x78 = NULL;
|
||||
|
||||
unlock();
|
||||
}
|
||||
|
||||
asm void JKRSolidHeap::do_freeTail(void) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D0F74.s"
|
||||
void JKRSolidHeap::do_freeTail(void) {
|
||||
lock();
|
||||
|
||||
if (mSolidTail != mEnd) {
|
||||
dispose(mSolidTail, mEnd);
|
||||
}
|
||||
|
||||
this->mFreeSize = ((u32)mEnd - (u32)mSolidTail + mFreeSize);
|
||||
this->mSolidTail = mEnd;
|
||||
|
||||
JKRSolidHeap::Unknown* unknown = field_0x78;
|
||||
while (unknown) {
|
||||
unknown->field_0xc = mEnd;
|
||||
unknown = unknown->mNext;
|
||||
}
|
||||
|
||||
unlock();
|
||||
}
|
||||
|
||||
asm void JKRSolidHeap::do_fillFreeArea(void) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D1000.s"
|
||||
void JKRSolidHeap::do_fillFreeArea(void) {
|
||||
#if DEBUG
|
||||
fillMemory(mSolidHead, mEnd - mSolidHead, (uint)DAT_8074a8ba);
|
||||
#endif
|
||||
}
|
||||
|
||||
asm s32 JKRSolidHeap::do_resize(void*, unsigned long) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D1004.s"
|
||||
s32 JKRSolidHeap::do_resize(void* ptr, u32 newSize) {
|
||||
// "resize: cannot resize memory block (%08x: %d)\n"
|
||||
const char* format = lbl_8039CE50 + 0x89;
|
||||
JUTWarningConsole_f(format, ptr, newSize);
|
||||
return -1;
|
||||
}
|
||||
|
||||
asm s32 JKRSolidHeap::do_getSize(void*) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D1038.s"
|
||||
s32 JKRSolidHeap::do_getSize(void* ptr) const {
|
||||
// "getSize: cannot get memory block size (%08x)\n"
|
||||
const char* format = lbl_8039CE50 + 0xB8;
|
||||
JUTWarningConsole_f(format, ptr);
|
||||
return -1;
|
||||
}
|
||||
|
||||
asm bool JKRSolidHeap::check(void) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D106C.s"
|
||||
bool JKRSolidHeap::check(void) {
|
||||
lock();
|
||||
|
||||
bool result = true;
|
||||
u32 calculatedSize =
|
||||
((u32)mSolidHead - (u32)mStart) + mFreeSize + ((u32)mEnd - (u32)mSolidTail);
|
||||
u32 availableSize = mSize;
|
||||
if (calculatedSize != availableSize) {
|
||||
result = false;
|
||||
// "check: bad total memory block size (%08X, %08X)\n"
|
||||
const char* format = lbl_8039CE50 + 0xE6;
|
||||
JUTWarningConsole_f(format, availableSize, calculatedSize);
|
||||
}
|
||||
|
||||
unlock();
|
||||
return result;
|
||||
}
|
||||
|
||||
// problem: int -> float conversion creates a temporary value (lbl_80455FA0 = 4.503599627370496E15).
|
||||
// Because the value is compiler generated the location in the .dol will not be the same as in the
|
||||
// original .dol file.
|
||||
#ifdef NONMATCHING
|
||||
bool JKRSolidHeap::dump(void) {
|
||||
bool result = check();
|
||||
|
||||
lock();
|
||||
u32 headSize = ((u32)mSolidHead - (u32)mStart);
|
||||
u32 tailSize = ((u32)mEnd - (u32)mSolidTail);
|
||||
s32 htSize = headSize + tailSize;
|
||||
const char* format1 = lbl_8039CE50 + 0x117; // "head %08x: %08x\n"
|
||||
JUTReportConsole_f(format1, mStart, headSize);
|
||||
|
||||
const char* format2 = lbl_8039CE50 + 0x128; // "tail %08x: %08x\n"
|
||||
JUTReportConsole_f(format2, mSolidTail, ((u32)mEnd - (u32)mSolidTail));
|
||||
|
||||
u32 totalSize = mSize;
|
||||
float percentage = (float)htSize / (float)totalSize * lbl_80455FA8;
|
||||
const char* format3 = lbl_8039CE50 + 0x139; // "%d / %d bytes (%6.2f%%) used\n"
|
||||
JUTReportConsole_f(format3, htSize, totalSize, percentage);
|
||||
unlock();
|
||||
|
||||
return result;
|
||||
}
|
||||
#else
|
||||
asm bool JKRSolidHeap::dump(void) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D10FC.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
asm void JKRSolidHeap::state_register(JKRHeap::TState*, unsigned long) const {
|
||||
// full match expect using the wrong register
|
||||
#ifdef NONMATCHING
|
||||
void JKRSolidHeap::state_register(JKRHeap::TState* p, u32 id) const {
|
||||
JUT_ASSERT(p != 0);
|
||||
JUT_ASSERT(p->getHeap() == this);
|
||||
|
||||
getState_(p);
|
||||
setState_u32ID_(p, id);
|
||||
setState_uUsedSize_(p, getUsedSize());
|
||||
setState_u32CheckCode_(p, (u32)mSolidHead + (u32)mSolidTail * 3);
|
||||
}
|
||||
#else
|
||||
asm void JKRSolidHeap::state_register(JKRHeap::TState* p, u32 id) const {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D11FC.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
asm bool JKRSolidHeap::state_compare(JKRHeap::TState const&, JKRHeap::TState const&) const {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D1258.s"
|
||||
bool JKRSolidHeap::state_compare(JKRHeap::TState const& r1, JKRHeap::TState const& r2) const {
|
||||
JUT_ASSERT(r1.getHeap() == r2.getHeap());
|
||||
|
||||
bool result = true;
|
||||
if (r1.getCheckCode() != r2.getCheckCode()) {
|
||||
result = false;
|
||||
}
|
||||
|
||||
if (r1.getUsedSize() != r2.getUsedSize()) {
|
||||
result = false;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
asm u32 JKRSolidHeap::getHeapType(void) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D1288.s"
|
||||
u32 JKRSolidHeap::getHeapType(void) const {
|
||||
return 'SLID';
|
||||
}
|
||||
|
||||
asm s32 JKRSolidHeap::do_getFreeSize(void) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D1294.s"
|
||||
s32 JKRSolidHeap::do_getFreeSize(void) const {
|
||||
return mFreeSize;
|
||||
}
|
||||
|
||||
asm void* JKRSolidHeap::do_getMaxFreeBlock(void) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D129C.s"
|
||||
void* JKRSolidHeap::do_getMaxFreeBlock(void) const {
|
||||
return mSolidHead;
|
||||
}
|
||||
|
||||
asm s32 JKRSolidHeap::do_getTotalFreeSize(void) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRSolidHeap/asm/func_802D12A4.s"
|
||||
s32 JKRSolidHeap::do_getTotalFreeSize(void) const {
|
||||
return getFreeSize();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user