summaryrefslogtreecommitdiff
path: root/include/JSystem
diff options
context:
space:
mode:
authorunknown <pheenoh@gmail.com>2020-12-01 19:04:35 -0500
committerunknown <pheenoh@gmail.com>2020-12-01 19:04:35 -0500
commit91fc5f6f532817dca0763a6e7841ce2a75ecb54d (patch)
treedb6b63a24336b6d767ec12a195cda6520e8d77e9 /include/JSystem
parent1ded84de460526448c0a2f5ffc5c651f4119d21b (diff)
parentac6b191dc19ddd1f155b55890953b7564c6f7b74 (diff)
Merge branch 'master' of https://github.com/zeldaret/tp
Diffstat (limited to 'include/JSystem')
-rw-r--r--include/JSystem/JKernel/JKRDisposer/JKRDisposer.h5
-rw-r--r--include/JSystem/JKernel/JKRDisposer/asm/func_802D147C.s (renamed from include/JSystem/JKernel/JKRHeap/asm/func_802D147C.s)0
-rw-r--r--include/JSystem/JKernel/JKRHeap/JKRHeap.h47
-rw-r--r--include/JSystem/JSupport/JSUList/JSUList.h21
4 files changed, 56 insertions, 17 deletions
diff --git a/include/JSystem/JKernel/JKRDisposer/JKRDisposer.h b/include/JSystem/JKernel/JKRDisposer/JKRDisposer.h
index f272e75136..7d9576912f 100644
--- a/include/JSystem/JKernel/JKRDisposer/JKRDisposer.h
+++ b/include/JSystem/JKernel/JKRDisposer/JKRDisposer.h
@@ -8,10 +8,11 @@ class JKRHeap;
class JKRDisposer {
public:
JKRDisposer();
- ~JKRDisposer();
+ virtual ~JKRDisposer();
+
+ virtual void callAllDisposer() = 0;
public:
- void** __vt;
JKRHeap* heap;
JSUPtrLink ptr_link;
};
diff --git a/include/JSystem/JKernel/JKRHeap/asm/func_802D147C.s b/include/JSystem/JKernel/JKRDisposer/asm/func_802D147C.s
index 14f91edca6..14f91edca6 100644
--- a/include/JSystem/JKernel/JKRHeap/asm/func_802D147C.s
+++ b/include/JSystem/JKernel/JKRDisposer/asm/func_802D147C.s
diff --git a/include/JSystem/JKernel/JKRHeap/JKRHeap.h b/include/JSystem/JKernel/JKRHeap/JKRHeap.h
index 3658a02c35..509bde938b 100644
--- a/include/JSystem/JKernel/JKRHeap/JKRHeap.h
+++ b/include/JSystem/JKernel/JKRHeap/JKRHeap.h
@@ -1,3 +1,5 @@
+#ifndef __JKRHEAP_H__
+#define __JKRHEAP_H__
#include "dolphin/types.h"
#include "JSystem/JKernel/JKRDisposer/JKRDisposer.h"
@@ -6,11 +8,11 @@ typedef void (*JKRErrorHandler)(void*, unsigned long, int);
class JKRHeap : JKRDisposer {
public:
JKRHeap(void*, u32, JKRHeap*, bool);
- ~JKRHeap();
+ virtual ~JKRHeap();
static bool initArena(char**, u32*, int);
- void becomeSystemHeap();
- void becomeCurrentHeap();
+ JKRHeap* becomeSystemHeap();
+ JKRHeap* becomeCurrentHeap();
void destroy();
static void* alloc(u32 size, int alignment, JKRHeap* heap);
@@ -19,7 +21,6 @@ class JKRHeap : JKRDisposer {
static void free(void* ptr, JKRHeap* heap);
void free(void* ptr);
- void callAllDisposer();
void freeAll();
void freeTail();
@@ -30,17 +31,17 @@ class JKRHeap : JKRDisposer {
s32 getSize(void* ptr);
s32 getFreeSize();
- u32 getMaxFreeBlock();
- u32 getTotalFreeSize();
+ s32 getMaxFreeBlock();
+ s32 getTotalFreeSize();
u8 changeGroupID(u8 param_1);
- u32 getMaxAllocatableSize(int alignment);
+ s32 getMaxAllocatableSize(int alignment);
static JKRHeap* findFromRoot(void* ptr);
JKRHeap* find(void* ptr) const;
JKRHeap* findAllHeap(void* ptr) const;
void dispose_subroutine(u32 begin, u32 end);
- void dispose(void* ptr, u32 size);
+ bool dispose(void* ptr, u32 size);
void dispose(void* begin, void* end);
void dispose();
@@ -52,6 +53,29 @@ class JKRHeap : JKRDisposer {
bool isSubHeap(JKRHeap* heap) const;
+ protected:
+ void callAllDisposer();
+ virtual void vt_func4() = 0;
+ virtual void vt_func5() = 0;
+ virtual void dump_sort();
+ virtual void vt_func7() = 0;
+ virtual void do_destroy() = 0;
+ virtual void* do_alloc(u32 size, int alignment) = 0;
+ virtual void do_free(void* ptr) = 0;
+ virtual void do_freeAll() = 0;
+ virtual void do_freeTail() = 0;
+ virtual void vt_func13() = 0;
+ virtual s32 do_resize(void* ptr, u32 size) = 0;
+ virtual s32 do_getSize(void* ptr) = 0;
+ virtual s32 do_getFreeSize() = 0;
+ virtual s32 do_getMaxFreeBlock() = 0;
+ virtual s32 do_getTotalFreeSize() = 0;
+ virtual u8 do_changeGroupID(u8 param_1);
+ virtual void do_getCurrent();
+ virtual void state_register();
+ virtual void state_compare();
+ virtual void state_dump();
+
public:
u8 mutex[24];
u32 begin;
@@ -64,8 +88,9 @@ class JKRHeap : JKRDisposer {
JSUPtrList child_list;
JSUPtrLink heap_link;
JSUPtrList disposable_list;
- bool error_handler;
+ bool error_flag;
u8 field_0x69;
+ u8 field_0x6a[2];
};
void* operator new(u32 size);
@@ -77,4 +102,6 @@ void* operator new[](u32 size, int alignment);
void* operator new[](u32 size, JKRHeap* heap, int alignment);
void operator delete(void* ptr);
-void operator delete[](void* ptr); \ No newline at end of file
+void operator delete[](void* ptr);
+
+#endif \ No newline at end of file
diff --git a/include/JSystem/JSupport/JSUList/JSUList.h b/include/JSystem/JSupport/JSUList/JSUList.h
index c0b145f223..eb57f70984 100644
--- a/include/JSystem/JSupport/JSUList/JSUList.h
+++ b/include/JSystem/JSupport/JSUList/JSUList.h
@@ -6,11 +6,11 @@
class JSUPtrList;
class JSUPtrLink {
public:
- JSUPtrLink(void*);
+ JSUPtrLink(void* owner);
~JSUPtrLink();
public:
- void* unk0;
+ void* owner;
JSUPtrList* list;
JSUPtrLink* prev;
JSUPtrLink* next;
@@ -35,13 +35,24 @@ class JSUPtrList {
u32 length;
};
-
template <typename T>
class JSUList : JSUPtrList {
public:
- JSUList() : JSUPtrList(true) {}
- ~JSUList() {};
+ JSUList() : JSUPtrList(true) {
+ }
+ ~JSUList(){};
+
+ void append(T* value) {
+ list.append(&value->ptr_link);
+ }
+
+ void prepend(T* value) {
+ list.prepend(&value->ptr_link);
+ }
+ void remove(T* value) {
+ list.remove(&value->ptr_link);
+ }
};
#endif