From ef1b1a9698ac24975d1a73ba56315c58255b14e1 Mon Sep 17 00:00:00 2001 From: louist103 <35883445+louist103@users.noreply.github.com> Date: Wed, 29 Oct 2025 16:57:43 +0000 Subject: Cleanup heap (#1305) * Small cleanup to heaps.c * Remove stdio.h * _aligned_free * Fix mac * Format --- mm/src/buffers/heaps.c | 30 +++++++++++++++++++++--------- mm/src/code/main.c | 3 ++- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/mm/src/buffers/heaps.c b/mm/src/buffers/heaps.c index 1e779720f..c87312ee4 100644 --- a/mm/src/buffers/heaps.c +++ b/mm/src/buffers/heaps.c @@ -2,23 +2,22 @@ #include "z64.h" #include #include -#ifndef _MSC_VER -#include +#if defined(__unix__) || defined(__APPLE__) +#include #endif u8* gAudioHeap; - u8* gSystemHeap; void Heaps_Alloc(void) { #ifdef _MSC_VER gAudioHeap = (u8*)_aligned_malloc(AUDIO_HEAP_SIZE, 0x10); gSystemHeap = (u8*)_aligned_malloc(SYSTEM_HEAP_SIZE, 0x10); -#elif defined(_POSIX_VERSION) && (_POSIX_VERSION >= 200112L) - if (posix_memalign((void**)&gAudioHeap, 0x10, AUDIO_HEAP_SIZE) != 0) - gAudioHeap = NULL; - if (posix_memalign((void**)&gSystemHeap, 0x10, SYSTEM_HEAP_SIZE) != 0) - gSystemHeap = NULL; +#elif defined(__unix__) || defined(__APPLE__) + gAudioHeap = mmap(NULL, AUDIO_HEAP_SIZE, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); + gSystemHeap = mmap(NULL, SYSTEM_HEAP_SIZE, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); + assert(gAudioHeap != MAP_FAILED); + assert(gSystemHeap != MAP_FAILED); #else gAudioHeap = (u8*)memalign(0x10, AUDIO_HEAP_SIZE); gSystemHeap = (u8*)memalign(0x10, SYSTEM_HEAP_SIZE); @@ -26,4 +25,17 @@ void Heaps_Alloc(void) { assert(gAudioHeap != NULL); assert(gSystemHeap != NULL); -} \ No newline at end of file +} + +void Heaps_Free(void) { +#ifdef _MSC_VER + _aligned_free(gAudioHeap); + _aligned_free(gSystemHeap); +#elif defined(__unix__) || defined(__APPLE__) + munmap(gAudioHeap, AUDIO_HEAP_SIZE); + munmap(gSystemHeap, SYSTEM_HEAP_SIZE); +#else + free(gAudioHeap); + free(gSystemHeap); +#endif +} diff --git a/mm/src/code/main.c b/mm/src/code/main.c index 764660ca6..a5b8aa734 100644 --- a/mm/src/code/main.c +++ b/mm/src/code/main.c @@ -47,7 +47,7 @@ s32 gScreenHeight = SCREEN_HEIGHT; size_t gSystemHeapSize = 0; void InitOTR(); - +void Heaps_Free(void); #ifdef __GNUC__ #define SDL_main main #endif @@ -148,4 +148,5 @@ void SDL_main(int argc, char** argv /* void* arg*/) { #ifdef _WIN32 FreeConsole(); #endif + Heaps_Free(); } -- cgit v1.2.3