diff options
| author | unknown <pheenoh@gmail.com> | 2020-12-01 19:04:35 -0500 |
|---|---|---|
| committer | unknown <pheenoh@gmail.com> | 2020-12-01 19:04:35 -0500 |
| commit | 91fc5f6f532817dca0763a6e7841ce2a75ecb54d (patch) | |
| tree | db6b63a24336b6d767ec12a195cda6520e8d77e9 /include/JSystem | |
| parent | 1ded84de460526448c0a2f5ffc5c651f4119d21b (diff) | |
| parent | ac6b191dc19ddd1f155b55890953b7564c6f7b74 (diff) | |
Merge branch 'master' of https://github.com/zeldaret/tp
Diffstat (limited to 'include/JSystem')
| -rw-r--r-- | include/JSystem/JKernel/JKRDisposer/JKRDisposer.h | 5 | ||||
| -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.h | 47 | ||||
| -rw-r--r-- | include/JSystem/JSupport/JSUList/JSUList.h | 21 |
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 |
