Commit graph

1297 commits

Author SHA1 Message Date
Daan Leijen
479ef4bf4c fix precise free size in aligned allocation 2023-03-15 19:07:35 -07:00
Daan Leijen
84ef963a47 remove conioinclude 2023-03-15 14:43:35 -07:00
Daan Leijen
9a2dbf373e move thread init to primitives 2023-03-15 13:35:23 -07:00
Daan Leijen
973268bf1e move random initialization to primitives 2023-03-15 12:40:18 -07:00
Daan Leijen
9b110090b2 move threadid and mi_get_default_heap to primitives 2023-03-14 20:35:00 -07:00
Daan Leijen
3579d3b861 move mi_thread_id to primitives 2023-03-14 19:38:45 -07:00
Daan Leijen
4348a05d0f small fixes 2023-03-14 18:24:38 -07:00
Daan Leijen
10f62eb5a1 add c primitives, move getenv into primitives 2023-03-14 18:10:00 -07:00
Daan Leijen
69cb30a874 move process info into primitives 2023-03-14 17:15:52 -07:00
Daan Leijen
08a01d26dc initial commit of new primitive layer 2023-03-14 16:54:46 -07:00
Daan Leijen
64fb009695 fix warning with zero padding 2023-03-05 22:27:45 -08:00
Daan Leijen
e912697d90 fix warning with zero padding 2023-03-05 22:26:05 -08:00
Daan Leijen
b3f3a0de3b include psapi.h instead of defining PROCESS_MEMORY_COUNTERS on windows 2023-03-05 22:22:36 -08:00
Daan Leijen
465eb81d30 track free blocks in valgrind for heap_destroy as well 2023-03-05 18:18:41 -08:00
Daan Leijen
82c85d1a13 fix valgrind mem for large alignment 2023-03-05 18:03:04 -08:00
Daan
056c2ce45b match track free size to tracked malloc size 2023-03-05 11:01:51 -08:00
Daan
3c906bde8b better track_free_size 2023-03-04 15:17:13 -08:00
Daan
6dcebdc303 fix sizes in memory tracking and padding for huge alignments 2023-03-04 14:49:02 -08:00
Daan
6cc0ad72fc match declaration of mi_malloc_size_checked on macOS 2023-03-04 09:58:02 -08:00
Daan
0d9e7ab61e remove extern inline from alloc_new functions to avoid link warnings 2023-03-04 09:27:04 -08:00
Daan Leijen
e68f2c1479 fix recursion issue on exit on windows, #672 2022-12-23 13:02:16 -08:00
Daan Leijen
37d5ce9498 comment out include 2022-12-21 12:09:52 -08:00
Daan Leijen
aa2d00fde8 make heap_new inline again 2022-12-21 10:28:58 -08:00
Daan Leijen
ef3f651f3f change implementation of mi_realpath to be more robust; see issue #660 2022-12-19 18:59:33 -08:00
Daan Leijen
95b61b8c3d forward libc interface used by wasi-libc; originally by @anuraaga in PR #667 but rebased to the dev branch 2022-12-19 17:45:15 -08:00
Daan Leijen
2b0421a25c fix -Wunused-function for mi_strn-cmp; originally by @rui314 in PR #662 but rebased to dev branch 2022-12-19 17:38:39 -08:00
Daan Leijen
4f2fdf76a0 add braces 2022-12-19 16:59:24 -08:00
Daan Leijen
dfc95f34c4 first try WriteFile for a redirected stderr 2022-12-19 16:57:50 -08:00
Daan Leijen
505a14bbd8 cleanup on-demand loading of psapi and bcrypt on windows 2022-12-19 16:50:13 -08:00
Johannes Schindelin
089e85b113 Make MIMALLOC_SHOW_STATS work with redirected stderr
Setting `MIMALLOC_SHOW_STATS` to ask mimalloc to print out something
after the process is done is the easiest way to verify that a
mimalloc-enabled Git is running.

So it better work and not try to write to a Win32 Console when it got a
regular file handle instead or, as is the case in Git for Windows'
regular Git Bash window, an emulated pseudo terminal.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-12-03 01:13:00 +01:00
Johannes Schindelin
edb181c377 Lazy-link to bcrypt
Let's not make `bcrypt.dl` a link-time bound library. Instead, load the
`BCryptGenRandom()` function dynamically. When needed. If needed.

This helps reduce the start-up cost of any mimalloc user because the
time spent on loading dynamic libraries is non-negligible.

Note: In contrast to how `os.c` loads libraries and obtains function
addresses, we cannot call `FreeLibrary(hDll)` here because that would
unload the `bcrypt` library before we want to use it.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-12-03 01:13:00 +01:00
Johannes Schindelin
948a0c44df Lazy-load psapi.dll
Let's load the `GetProcessMemoryInfo()` function dynamically. When
needed. If needed.

This is necessary because the start-up cost spent on loading dynamic
libraries is non-negligible.

Note: In contrast to how `os.c` loads libraries and obtains function
addresses, we cannot call `FreeLibrary(hDll)` here because that would
unload the `bcrypt` library before we want to use it.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-12-03 01:12:59 +01:00
Johannes Schindelin
11cab6a0c0 Avoid %z format
This format is not supported by MSVC runtimes targeted by the mingw-64
toolchain.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-12-03 00:24:43 +01:00
Johannes Schindelin
2c40e0d02f Allow running in Windows Nano Server containers
The `GetNumaProcessorNode()` symbol is not defined in Nano Server's DLLs
(because that function is long deprecated). This causes problems with
any executable that uses mimalloc when trying to run on Nano Server.

Instead of importing this function statically, try to import it
dynamically, and fall back gracefully if it cannot be loaded.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-12-03 00:24:43 +01:00
Johannes Schindelin
745a34f475 Fix whitespace
This mostly deletes trailing spaces.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-12-03 00:24:20 +01:00
Daan Leijen
10981ab122 add initial support for using mimalloc with address sanitizer support; use -DMI_ASAN=ON 2022-11-28 10:55:19 -08:00
Daan Leijen
e42a22c9ca fix warnings 2022-11-28 09:59:48 -08:00
Daan
8098040c23 add pointer validity check on malloc_size when overriding on macOSX; issue #638 2022-11-25 16:38:20 -08:00
Daan Leijen
604d4b259b fix assertion failure (issue #650) 2022-11-25 14:27:48 -08:00
Daan Leijen
4b56af178e remove ,not all freed, messag
e from reserved and committed stats (as that is expected at normal process exit)
2022-11-23 10:06:35 -08:00
Daan Leijen
a7bd9c08c8 fix decommit of huge pages 2022-11-23 09:58:45 -08:00
Daan Leijen
e7dac7c405 prevent retiring pages in the huge queue (which may have a small size but huge alignment) 2022-11-22 21:02:05 -08:00
Daan Leijen
db0a69b482 remove comment 2022-11-22 20:57:31 -08:00
Daan Leijen
969d8bc5fe make huge pages part of the regular page queues again 2022-11-22 20:56:35 -08:00
Daan Leijen
fed883c81f refactor mi_segment_init fix 2022-11-22 18:44:27 -08:00
Daan Leijen
00a42bf379 refactor mi_segment_init 2022-11-22 18:42:05 -08:00
Daan Leijen
7dce31f743 reenable decommitting of a huge aligned prefix 2022-11-22 18:13:27 -08:00
Daan Leijen
9617f16df9 add STL allocators that use a specific heap and can destroy at the end; see original PR #625 by @vmarkovtsev 2022-11-22 16:58:32 -08:00
Daan Leijen
6e2b077b35 rename to heap_alloc_new and heap_alloc_new_n 2022-11-22 14:48:26 -08:00
Daan Leijen
34910664f1 add mi_heap_new_ and mi_heap_new_n 2022-11-22 14:46:23 -08:00