summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pso/THeap.cpp62
1 files changed, 12 insertions, 50 deletions
diff --git a/src/pso/THeap.cpp b/src/pso/THeap.cpp
index bf2a35a..54772ff 100644
--- a/src/pso/THeap.cpp
+++ b/src/pso/THeap.cpp
@@ -146,62 +146,24 @@ THeap::~THeap() {
xfree(heap_nodes);
}
-// Getting closer, still not sure how to match though.
-#ifndef MATCHING
THeap::THeap(size_t size, int alignment) {
- heap_size = 0;
+ mbr_0x0C = 0;
mbr_0x10 = 0;
align = alignment;
heap_nodes = (heap_node *)xmalloc(size);
if (heap_nodes != NULL) {
- const u32 new_size = size - heap_offset;
- heap_node *tmp_heap;
+ heap_node *tmp_node;
+ heap_node *next_tmp_node;
+
memset(heap_nodes, 0, size);
- tmp_heap = heap_nodes;
- tmp_heap->next = tmp_heap + 1;
- heap_nodes->alloc_size = 0;
- tmp_heap[1].align = 0;
- tmp_heap[1].heap_size = new_size;
+ tmp_node = heap_nodes;
+ next_tmp_node = &tmp_node[1];
+ tmp_node->next = next_tmp_node;
+
+ heap_nodes->remaining_size = 0;
+
+ next_tmp_node->next = NULL;
+ next_tmp_node->remaining_size = size - heap_offset;
}
}
-#else
-asm THeap::THeap(size_t size, int alignment) {
-nofralloc
-/* 801410F0 9421FFF0 */ stwu r1, -0x10(r1)
-/* 801410F4 7C0802A6 */ mflr r0
-/* 801410F8 90010014 */ stw r0, 0x14(r1)
-/* 801410FC 38000000 */ li r0, 0x0
-/* 80141100 BFC10008 */ stmw r30, 8(r1)
-/* 80141104 7C7E1B78 */ mr r30, r3
-/* 80141108 7C9F2378 */ mr r31, r4
-/* 8014110C 9003000C */ stw r0, 0xc(r3)
-/* 80141110 7FE3FB78 */ mr r3, r31
-/* 80141114 901E0010 */ stw r0, 0x10(r30)
-/* 80141118 90BE0008 */ stw r5, 8(r30)
-/* 8014111C 48299FC5 */ bl xmalloc
-/* 80141120 907E0000 */ stw r3, 0(r30)
-/* 80141124 807E0000 */ lwz r3, 0(r30)
-/* 80141128 28030000 */ cmplwi r3, 0
-/* 8014112C 41820034 */ beq- lbl_80141160
-/* 80141130 7FE5FB78 */ mr r5, r31
-/* 80141134 38800000 */ li r4, 0x0
-/* 80141138 4BECD1FD */ bl memset
-/* 8014113C 807E0000 */ lwz r3, 0(r30)
-/* 80141140 38800000 */ li r4, 0x0
-/* 80141144 381FFFF8 */ addi r0, r31, -0x8
-/* 80141148 38A30008 */ addi r5, r3, 0x8
-/* 8014114C 90A30000 */ stw r5, 0(r3)
-/* 80141150 807E0000 */ lwz r3, 0(r30)
-/* 80141154 90830004 */ stw r4, 4(r3)
-/* 80141158 90850000 */ stw r4, 0(r5)
-/* 8014115C 90050004 */ stw r0, 4(r5)
-lbl_80141160:
-/* 80141160 7FC3F378 */ mr r3, r30
-/* 80141164 BBC10008 */ lmw r30, 8(r1)
-/* 80141168 80010014 */ lwz r0, 0x14(r1)
-/* 8014116C 7C0803A6 */ mtlr r0
-/* 80141170 38210010 */ addi r1, r1, 0x10
-/* 80141174 4E800020 */ blr
-}
-#endif