From c0c762611c309e86e31a04778059101fa6536bb0 Mon Sep 17 00:00:00 2001 From: Daan Leijen Date: Mon, 20 Mar 2023 10:49:56 -0700 Subject: [PATCH] add prim/osx directory --- CMakeLists.txt | 20 +++++++++---------- .../osx/alloc-override-zone.c} | 0 src/prim/osx/prim.c | 9 +++++++++ src/prim/prim.c | 6 ++++++ src/static.c | 14 ++++++------- 5 files changed, 32 insertions(+), 17 deletions(-) rename src/{alloc-override-osx.c => prim/osx/alloc-override-zone.c} (100%) create mode 100644 src/prim/osx/prim.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 68b7cab4..5c8e55f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,20 +38,20 @@ include(GNUInstallDirs) include("cmake/mimalloc-config-version.cmake") set(mi_sources - src/stats.c - src/random.c - src/os.c - src/bitmap.c - src/arena.c - src/region.c - src/segment.c - src/page.c src/alloc.c src/alloc-aligned.c src/alloc-posix.c + src/arena.c + src/bitmap.c src/heap.c - src/options.c src/init.c + src/options.c + src/os.c + src/page.c + src/random.c + src/region.c + src/segment.c + src/stats.c src/prim/prim.c) set(mi_cflags "") @@ -92,7 +92,7 @@ if(MI_OVERRIDE) if(MI_OSX_ZONE) # use zone's on macOS message(STATUS " Use malloc zone to override malloc (MI_OSX_ZONE=ON)") - list(APPEND mi_sources src/alloc-override-osx.c) + list(APPEND mi_sources src/prim/osx/alloc-override-zone.c) list(APPEND mi_defines MI_OSX_ZONE=1) if (NOT MI_OSX_INTERPOSE) message(STATUS " WARNING: zone overriding usually also needs interpose (use -DMI_OSX_INTERPOSE=ON)") diff --git a/src/alloc-override-osx.c b/src/prim/osx/alloc-override-zone.c similarity index 100% rename from src/alloc-override-osx.c rename to src/prim/osx/alloc-override-zone.c diff --git a/src/prim/osx/prim.c b/src/prim/osx/prim.c new file mode 100644 index 00000000..8a2f4e8a --- /dev/null +++ b/src/prim/osx/prim.c @@ -0,0 +1,9 @@ +/* ---------------------------------------------------------------------------- +Copyright (c) 2018-2023, Microsoft Research, Daan Leijen +This is free software; you can redistribute it and/or modify it under the +terms of the MIT license. A copy of the license can be found in the file +"LICENSE" at the root of this distribution. +-----------------------------------------------------------------------------*/ + +// We use the unix/prim.c with the mmap API on macOSX +#include "../unix/prim.c" diff --git a/src/prim/prim.c b/src/prim/prim.c index 109ab8e8..9a597d8e 100644 --- a/src/prim/prim.c +++ b/src/prim/prim.c @@ -10,9 +10,15 @@ terms of the MIT license. A copy of the license can be found in the file #if defined(_WIN32) #include "windows/prim.c" // VirtualAlloc (Windows) + +#elif defined(__APPLE__) +#include "osx/prim.c" // macOSX (actually defers to mmap in unix/prim.c) + #elif defined(__wasi__) #define MI_USE_SBRK #include "wasi/prim.c" // memory-grow or sbrk (Wasm) + #else #include "unix/prim.c" // mmap() (Linux, macOSX, BSD, Illumnos, Haiku, DragonFly, etc.) + #endif diff --git a/src/static.c b/src/static.c index d0652526..090f0c25 100644 --- a/src/static.c +++ b/src/static.c @@ -20,11 +20,8 @@ terms of the MIT license. A copy of the license can be found in the file // containing the whole library. If it is linked first // it will override all the standard library allocation // functions (on Unix's). -#include "alloc.c" +#include "alloc.c" // includes alloc-override.c #include "alloc-aligned.c" -#if MI_OSX_ZONE -#include "alloc-override-osx.c" -#endif #include "alloc-posix.c" #include "arena.c" #include "bitmap.c" @@ -32,9 +29,12 @@ terms of the MIT license. A copy of the license can be found in the file #include "init.c" #include "options.c" #include "os.c" -#include "page.c" -#include "prim/prim.c" -#include "random.c" +#include "page.c" // includes page-queue.c +#include "random.c" #include "region.c" #include "segment.c" #include "stats.c" +#include "prim/prim.c" +#if MI_OSX_ZONE +#include "prim/osx/alloc-override-zone.c" +#endif