From 5f5ff2cb2fd4e9dffdf1ec586a762465ee7a9d8a Mon Sep 17 00:00:00 2001 From: Cuyler36 Date: Wed, 22 Feb 2023 22:29:35 -0500 Subject: [PATCH 1/2] Implement JSystem/JKernel/JKRDisposer.cpp --- config/dol_slices.yml | 2 ++ src/JSystem/JKernel/JKRDisposer.cpp | 15 +++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 src/JSystem/JKernel/JKRDisposer.cpp diff --git a/config/dol_slices.yml b/config/dol_slices.yml index 55bcb3f3..9a3c6ef7 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 00000000..4ecb428a --- /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); + } +} From bc376ef623a52a6f78e4312df4fb3106bbffa8a8 Mon Sep 17 00:00:00 2001 From: Cuyler36 Date: Thu, 23 Feb 2023 02:51:54 -0500 Subject: [PATCH 2/2] Include .data and .sdata for JKRDisposer in dol_slices.yml --- config/dol_slices.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/dol_slices.yml b/config/dol_slices.yml index 9a3c6ef7..26bb29ea 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -13,6 +13,8 @@ JSystem/JKernel/JKRHeap.cpp: .sbss: [0x802186d8, 0x80218700] JSystem/JKernel/JKRDisposer.cpp: .text: [0x80065aa0, 0x80065b8c] + .data: [0x800de3a8, 0x800de3c0] + .sdata: [0x80217ec0, 0x80217ec8] dolphin/BASE/ppcarch.c: .text: [0x8007867c, 0x80078718] dolphin/os/OSArena.c: