@@ -29,7 +29,7 @@ void LogHeap(const char* pName, EGG::Heap* pHeap) {
2929 * @param pBlock Target of delete operation
3030 */
3131void CheckDoubleFree (const void * pBlock) {
32- #ifndef NDEBUG
32+ #if !defined( NDEBUG)
3333 // nullptr delete is OK
3434 if (pBlock == nullptr ) {
3535 return ;
@@ -63,61 +63,32 @@ void CheckDoubleFree(const void* pBlock) {
6363 * @brief Constructor
6464 */
6565MemoryMgr::MemoryMgr () {
66- #if defined(PACK_SPORTS) || defined(PACK_PLAY)
67- EGG::Heap* pMem1HeapRP = RP_GET_INSTANCE (RPSysSystem)->getSystemHeap ();
68- EGG::Heap* pMem2HeapRP = RP_GET_INSTANCE (RPSysSystem)->getResourceHeap ();
69- #elif defined(PACK_RESORT)
70- EGG::Heap* pMem1HeapRP = RP_GET_INSTANCE (RPSysSystem)->getRootHeapMem1 ();
71- EGG::Heap* pMem2HeapRP = RP_GET_INSTANCE (RPSysSystem)->getResourceHeap ();
72- #endif
73-
74- K_ASSERT_PTR (pMem1HeapRP);
75- LogHeap (" RPSysSystem:System" , pMem1HeapRP);
66+ EGG::Heap* pRootHeapMEM1 = RPSysSystem::getRootHeapMem1 ();
67+ K_ASSERT_PTR (pRootHeapMEM1);
7668
77- K_ASSERT_PTR (pMem2HeapRP );
78- LogHeap ( " RPSysSystem:Resource " , pMem2HeapRP );
69+ EGG::Heap* pRootHeapMEM2 = RPSysSystem::getRootHeapMem2 ( );
70+ K_ASSERT_PTR (pRootHeapMEM2 );
7971
80- mpHeapMEM1 = EGG::ExpHeap::create (HEAP_SIZE, pMem1HeapRP );
72+ mpHeapMEM1 = EGG::ExpHeap::create (HEAP_SIZE_MEM1, pRootHeapMEM1 );
8173 K_ASSERT_PTR (mpHeapMEM1);
8274 K_ASSERT (OSIsMEM1Region (mpHeapMEM1));
83- LogHeap (" libkiwi:MEM1" , mpHeapMEM1);
8475
85- mpHeapMEM2 = EGG::ExpHeap::create (HEAP_SIZE, pMem2HeapRP );
76+ mpHeapMEM2 = EGG::ExpHeap::create (HEAP_SIZE_MEM2, pRootHeapMEM2 );
8677 K_ASSERT_PTR (mpHeapMEM2);
8778 K_ASSERT (OSIsMEM2Region (mpHeapMEM2));
88- LogHeap (" libkiwi:MEM2" , mpHeapMEM2);
79+
80+ Dump ();
8981}
9082
9183/* *
9284 * @brief Destructor
9385 */
9486MemoryMgr::~MemoryMgr () {
9587 delete mpHeapMEM1;
96- delete mpHeapMEM2;
97- }
98-
99- /* *
100- * @brief Gets the heap corresponding to the specified memory region
101- *
102- * @param memory Target memory region
103- */
104- EGG::Heap* MemoryMgr::GetHeap (EMemory memory) const {
105- switch (memory) {
106- case EMemory_MEM1: {
107- K_ASSERT_PTR (mpHeapMEM1);
108- return mpHeapMEM1;
109- }
110-
111- case EMemory_MEM2: {
112- K_ASSERT_PTR (mpHeapMEM2);
113- return mpHeapMEM2;
114- }
88+ mpHeapMEM1 = nullptr ;
11589
116- default : {
117- K_UNREACHABLE ();
118- return nullptr ;
119- }
120- }
90+ delete mpHeapMEM2;
91+ mpHeapMEM2 = nullptr ;
12192}
12293
12394/* *
@@ -148,6 +119,30 @@ void MemoryMgr::Free(void* pBlock) const {
148119 EGG::Heap::free (pBlock, nullptr );
149120}
150121
122+ /* *
123+ * @brief Gets the heap corresponding to the specified memory region
124+ *
125+ * @param memory Target memory region
126+ */
127+ EGG::Heap* MemoryMgr::GetHeap (EMemory memory) const {
128+ switch (memory) {
129+ case EMemory_MEM1: {
130+ K_ASSERT_PTR (mpHeapMEM1);
131+ return mpHeapMEM1;
132+ }
133+
134+ case EMemory_MEM2: {
135+ K_ASSERT_PTR (mpHeapMEM2);
136+ return mpHeapMEM2;
137+ }
138+
139+ default : {
140+ K_UNREACHABLE ();
141+ return nullptr ;
142+ }
143+ }
144+ }
145+
151146/* *
152147 * @brief Gets size of available heap memory
153148 *
@@ -190,6 +185,28 @@ bool MemoryMgr::IsHeapMemory(const void* pAddr) const {
190185 return false ;
191186}
192187
188+ /* *
189+ * @brief Dumps heap information for debugging purposes
190+ */
191+ void MemoryMgr::Dump () {
192+ LogHeap (" libkiwi:MEM1" , mpHeapMEM1);
193+ LogHeap (" libkiwi:MEM2" , mpHeapMEM2);
194+
195+ LogHeap (" EGG:MEM1" , RPSysSystem::getRootHeapMem1 ());
196+ LogHeap (" EGG:MEM2" , RPSysSystem::getRootHeapMem2 ());
197+ LogHeap (" EGG:System" , RPSysSystem::getSystemHeap ());
198+
199+ LogHeap (" RPSysSystem:System" ,
200+ RP_GET_INSTANCE (RPSysSystem)->getSystemHeapRP ());
201+ LogHeap (" RPSysSystem:Resource" ,
202+ RP_GET_INSTANCE (RPSysSystem)->getResourceHeap ());
203+
204+ #if defined(PACK_RESORT)
205+ LogHeap (" RPSysSystem:RootScene" ,
206+ RP_GET_INSTANCE (RPSysSystem)->getRootSceneHeap ());
207+ #endif
208+ }
209+
193210} // namespace kiwi
194211
195212/* *
0 commit comments