diff --git a/config/dol_slices.yml b/config/dol_slices.yml index 55bcb3f..9a3c6ef 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -11,6 +11,8 @@ JSystem/JKernel/JKRHeap.cpp: .data: [0x800ddf20, 0x800ddf98] .sdata: [0x80217e58, 0x80217e80] .sbss: [0x802186d8, 0x80218700] +JSystem/JKernel/JKRDisposer.cpp: + .text: [0x80065aa0, 0x80065b8c] dolphin/BASE/ppcarch.c: .text: [0x8007867c, 0x80078718] dolphin/os/OSArena.c: diff --git a/src/JSystem/JKernel/JKRDisposer.cpp b/src/JSystem/JKernel/JKRDisposer.cpp new file mode 100644 index 0000000..4ecb428 --- /dev/null +++ b/src/JSystem/JKernel/JKRDisposer.cpp @@ -0,0 +1,15 @@ +#include "JSystem/JKernel/JKRDisposer.h" +#include "JSystem/JKernel/JKRHeap.h" + +JKRDisposer::JKRDisposer() : mPointerLinks(this) { + this->mRootHeap = JKRHeap::findFromRoot(this); + if (this->mRootHeap != nullptr) { + this->mRootHeap->appendDisposer(this); + } +} + +JKRDisposer::~JKRDisposer() { + if (this->mRootHeap != nullptr) { + this->mRootHeap->removeDisposer(this); + } +}