Isolate JKRHeap operator overloads

Fixes #25

This isolates the JKRHeap operator new/delete overloads. Every single new/delete site in the code has been replaced with a macro.

Sadly for new[] and delete[] we have to keep global operators. The global new[] just allocates into malloc() however, and delete[] goes into free() if it's not in a JKRHeap. So that's fine.
This commit is contained in:
PJB3005
2026-02-27 23:11:59 +01:00
parent 2204ad0813
commit 038ef4216f
634 changed files with 3451 additions and 3350 deletions
+2 -2
View File
@@ -526,7 +526,7 @@ JAIAudible* Z2Audience::newAudible(const JGeometry::TVec3<f32>& pos, JAISoundID
JAUAudibleParam params = Z2GetSoundInfo()->getAudibleSwFull(soundID);
bool x = params.field_0x0.bytes.b0_0 != 0;
Z2Audible* audible = new Z2Audible(pos, param_2, channelNum, x);
Z2Audible* audible = JKR_NEW Z2Audible(pos, param_2, channelNum, x);
if (audible == NULL) {
return NULL;
}
@@ -552,7 +552,7 @@ JAIAudible* Z2Audience::newAudible(const JGeometry::TVec3<f32>& pos, JAISoundID
}
void Z2Audience::deleteAudible(JAIAudible* audible) {
delete audible;
JKR_DELETE(audible);
}
Z2Audible::~Z2Audible() {}
+2 -2
View File
@@ -55,7 +55,7 @@ void Z2AudioArcLoader::readBSTN(const void* addr, u32 param_1) {
u8* bstnDst = (u8*)addr;
if (param_1 != 0) {
bstnDst = new (gameHeap, 4) u8[param_1];
bstnDst = JKR_NEW_ARGS (gameHeap, 4) u8[param_1];
if (bstnDst != NULL) {
memcpy(bstnDst, addr, param_1);
}
@@ -63,7 +63,7 @@ void Z2AudioArcLoader::readBSTN(const void* addr, u32 param_1) {
JUT_ASSERT(122, bstnDst);
}
JAUSoundNameTable* soundNameTable = new (gameHeap, 0) JAUSoundNameTable(true);
JAUSoundNameTable* soundNameTable = JKR_NEW_ARGS (gameHeap, 0) JAUSoundNameTable(true);
JUT_ASSERT(125, soundNameTable);
soundNameTable->init(bstnDst);
+1 -1
View File
@@ -89,7 +89,7 @@ void Z2AudioMgr::init(JKRSolidHeap* heap, u32 memSize, void* baaData, JKRArchive
seqMgr->getParams()->moveVolume(Z2Param::VOL_BGM_DEFAULT, 0);
JAIStreamMgr* streamMgr = mSoundMgr.getStreamMgr();
JAUStreamStaticAramMgr_<1>* streamStaticAramMgr = new(heap, 0) JAUStreamStaticAramMgr_<1>();
JAUStreamStaticAramMgr_<1>* streamStaticAramMgr = JKR_NEW_ARGS(heap, 0) JAUStreamStaticAramMgr_<1>();
streamStaticAramMgr->reserveAram(NULL, 0, 0x14);
streamMgr->setStreamAramMgr(streamStaticAramMgr);
streamMgr->getParams()->moveVolume(Z2Param::VOL_BGM_DEFAULT, 0);
+21 -21
View File
@@ -42,28 +42,28 @@ void Z2DebugSys::initJAW() {
JAWPlayerChView* playerChView;
JKRSetCurrentHeap(heap);
u32 local_50 = heap->getFreeSize();
soundPlayer = new (heap, 0) Z2SoundPlayer("GC-Zelda2");
sysMemView = new (heap, 0) JAWSysMemView();
bankView = new (heap, 0) JAWBankView();
chView = new (heap, 0) JAWChView();
trackView = new (heap, 0) Z2TrackView(0, Z2TrackView::DISPMODE0);
reportView = new (heap, 0) JAWReportView();
soundPlayer = JKR_NEW_ARGS (heap, 0) Z2SoundPlayer("GC-Zelda2");
sysMemView = JKR_NEW_ARGS (heap, 0) JAWSysMemView();
bankView = JKR_NEW_ARGS (heap, 0) JAWBankView();
chView = JKR_NEW_ARGS (heap, 0) JAWChView();
trackView = JKR_NEW_ARGS (heap, 0) Z2TrackView(0, Z2TrackView::DISPMODE0);
reportView = JKR_NEW_ARGS (heap, 0) JAWReportView();
JASReportInit(heap, 500);
hioBankEdit = new (heap, 0) JAWHioBankEdit();
waveArcLoader = new (heap, 0) Z2WaveArcLoader();
volume = new (heap, 0) JAWVolume(90, 480);
playSeView = new (heap, 0) Z2PlaySeView();
audSettingView = new (heap, 0) Z2AudSettingView();
dspCheck = new (heap, 0) Z2DSPCheck();
hioBankEdit = JKR_NEW_ARGS (heap, 0) JAWHioBankEdit();
waveArcLoader = JKR_NEW_ARGS (heap, 0) Z2WaveArcLoader();
volume = JKR_NEW_ARGS (heap, 0) JAWVolume(90, 480);
playSeView = JKR_NEW_ARGS (heap, 0) Z2PlaySeView();
audSettingView = JKR_NEW_ARGS (heap, 0) Z2AudSettingView();
dspCheck = JKR_NEW_ARGS (heap, 0) Z2DSPCheck();
JAWExtSystem::registWindow(1, soundPlayer, 10, 22);
entrySeView = new (heap, 0) Z2EntrySeView();
entrySeView = JKR_NEW_ARGS (heap, 0) Z2EntrySeView();
JAWExtSystem::registWindow(2, entrySeView, 10, 22);
JAWExtSystem::registWindow(3, playSeView, 10, 22);
JAWExtSystem::registWindow(4, sysMemView, 10, 22);
JAWExtSystem::registWindow(5, bankView, 10, 22);
JAWExtSystem::registWindow(6, chView, 10, 22);
JAWExtSystem::registWindow(7, trackView, 10, 22);
playerChView = new (heap, 0) JAWPlayerChView();
playerChView = JKR_NEW_ARGS (heap, 0) JAWPlayerChView();
JAWExtSystem::registWindow(8, playerChView, 10, 22);
JAWExtSystem::registWindow(11, reportView, 330, 0);
JAWExtSystem::registWindow(12, hioBankEdit, 10, 0);
@@ -80,21 +80,21 @@ void Z2DebugSys::initSoundHioNode() {
JKRSetCurrentHeap(heap);
s32 freeSize = heap->getFreeSize();
JAHSingletonBase<JAHioMgr>::newInstance();
JAHioNode* soundRoot = new (heap, 0) JAHioNode("サウンド");
JAHioNode* soundRoot = JKR_NEW_ARGS (heap, 0) JAHioNode("サウンド");
JUT_ASSERT(239, soundRoot);
JAHSingletonBase<JAHioMgr>::getIns()->init_OnGame();
JAHSingletonBase<JAHioMgr>::getIns()->appendRootNode(&mDoHIO_root, soundRoot);
mDoHIO_createChild("サウンド", soundRoot);
JAHSoundPlayerNode* soundPlayerNode = new (heap, 0) JAHSoundPlayerNode();
JAHSoundPlayerNode* soundPlayerNode = JKR_NEW_ARGS (heap, 0) JAHSoundPlayerNode();
JUT_ASSERT(258, soundPlayerNode);
soundRoot->appendNode(soundPlayerNode, NULL);
Z2ParamNode* paramNode = new (heap, 0) Z2ParamNode();
Z2ParamNode* paramNode = JKR_NEW_ARGS (heap, 0) Z2ParamNode();
JUT_ASSERT(262, paramNode);
soundRoot->appendNode(paramNode, NULL);
Z2FxLineEditNode* fxNode = new (heap, 0) Z2FxLineEditNode(heap);
Z2FxLineEditNode* fxNode = JKR_NEW_ARGS (heap, 0) Z2FxLineEditNode(heap);
JUT_ASSERT(267, fxNode);
soundRoot->appendNode(fxNode, NULL);
Z2F1SwingTestNode* f1TestWin = new (heap, 0) Z2F1SwingTestNode();
Z2F1SwingTestNode* f1TestWin = JKR_NEW_ARGS (heap, 0) Z2F1SwingTestNode();
JUT_ASSERT(284, f1TestWin);
soundRoot->appendNode(f1TestWin, NULL);
JAWExtSystem::registWindow(10, f1TestWin, 10, 22);
@@ -111,9 +111,9 @@ JAISeqDataMgr* Z2DebugSys::initSeSeqDataMgr(const void* param_1) {
JKRExpHeap* heap = mDoExt_getGameHeap();
JKRSetCurrentHeap(heap);
s32 freeSize = heap->getFreeSize();
JAWHioReceiver* receiver = new (heap, 0) JAWHioReceiver();
JAWHioReceiver* receiver = JKR_NEW_ARGS (heap, 0) JAWHioReceiver();
JAWExtSystem::registWindow(0, receiver, 10, 22);
seqDataMgr = new (heap, 0) Z2HioSeSeqDataMgr(param_1, receiver);
seqDataMgr = JKR_NEW_ARGS (heap, 0) Z2HioSeSeqDataMgr(param_1, receiver);
JKRSetCurrentHeap(oldHeap);
return seqDataMgr;
}
+5 -5
View File
@@ -20,10 +20,10 @@ void Z2FxLineMgr::initDataArc(JKRArchive* arc, JKRHeap* heap) {
JUT_ASSERT(44, arc);
JUT_ASSERT(45, heap);
mFxLineBuffer[0] = new (heap, 0x20) u8[0x2800];
mFxLineBuffer[1] = new (heap, 0x20) u8[0x2800];
mFxLineBuffer[2] = new (heap, 0x20) u8[0x4B00];
mFxLineBuffer[3] = new (heap, 0x20) u8[0x4B00];
mFxLineBuffer[0] = JKR_NEW_ARGS (heap, 0x20) u8[0x2800];
mFxLineBuffer[1] = JKR_NEW_ARGS (heap, 0x20) u8[0x2800];
mFxLineBuffer[2] = JKR_NEW_ARGS (heap, 0x20) u8[0x4B00];
mFxLineBuffer[3] = JKR_NEW_ARGS (heap, 0x20) u8[0x4B00];
JUT_ASSERT(53, mFxLineBuffer[0]);
JUT_ASSERT(54, mFxLineBuffer[1]);
@@ -31,7 +31,7 @@ void Z2FxLineMgr::initDataArc(JKRArchive* arc, JKRHeap* heap) {
JUT_ASSERT(56, mFxLineBuffer[3]);
mFxDataNum = arc->countResource();
mConfig = new (heap, 0) Z2FxLineConfig[mFxDataNum];
mConfig = JKR_NEW_ARGS (heap, 0) Z2FxLineConfig[mFxDataNum];
for (u8 i = 0; i < mFxDataNum; i++) {
void* res = arc->getResource(i);
+3 -3
View File
@@ -20,7 +20,7 @@ void Z2SoundHandles::deleteHandlesPool() {
JUT_ASSERT(48, handle->getSupervisor() == this);
remove(handle);
delete handle;
JKR_DELETE(handle);
}
handleNum_ = 0;
@@ -64,7 +64,7 @@ Z2SoundHandlePool* Z2SoundHandles::getFreeHandle() {
}
if (getNumHandles() < handleNum_) {
Z2SoundHandlePool* handle = new Z2SoundHandlePool();
Z2SoundHandlePool* handle = JKR_NEW Z2SoundHandlePool();
if (handle != NULL) {
append(handle);
JUT_ASSERT(113, handle->getSupervisor() == this);
@@ -141,7 +141,7 @@ void Z2SoundHandles::setPos(const JGeometry::TVec3<f32>& pos) {
}
else {
remove(handle);
delete handle;
JKR_DELETE(handle);
}
}
}