2073 Commits

Author SHA1 Message Date
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
ddc9841019 fix parameters for mi_track_free 2022-11-28 11:12:35 -08: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
76db72814c fix unused parameter warning in clang 2022-11-28 10:54:45 -08:00
Daan Leijen
e42a22c9ca fix warnings 2022-11-28 09:59:48 -08:00
Daan Leijen
be2bc9e7ca better attributes on new/delete overrides for Microsoft visual C++ 2022-11-28 09:15:16 -08:00
Vadim Markovtsev
7da4a34dc1 Make "destroy" a compile-time constant + fix const allocator comparisons 2022-11-28 12:04:12 +01:00
Daan Leijen
c1299484de refactor C++ STL allocator definitions (pr #651) 2022-11-27 13:00:15 -08:00
Daan
4295b9cc5f
Merge pull request #651 from vmarkovtsev/dry
Refactor C++ allocators to be DRY and protected
2022-11-27 12:12:11 -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
2d79ae7ecf Merge branch 'dev' of https://github.com/microsoft/mimalloc into dev 2022-11-25 15:44:31 -08:00
Daan
81b261e657 add test for #587 2022-11-25 15:44:24 -08:00
Daan Leijen
604d4b259b fix assertion failure (issue #650) 2022-11-25 14:27:48 -08:00
Daan
78af17e3b3 add extra alignment test 2022-11-25 14:03:00 -08:00
Vadim Markovtsev
4cdfc18888 Refactor C++ allocators to be DRY and protected 2022-11-24 15:13:19 +01: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
78690fbec2 fix proteced status in stl allocator (pr #625)# 2022-11-22 18:41:51 -08:00
Daan Leijen
7dce31f743 reenable decommitting of a huge aligned prefix 2022-11-22 18:13:27 -08:00
Daan Leijen
061bbe25b0 update readme 2022-11-22 17:17:14 -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
Daan
fe300ca141 fix extern inline definition (issue #643) 2022-11-22 10:58:02 -08:00
Daan
631f22fbda change library linkage to PRIVATE (issue #646) 2022-11-22 10:54:40 -08:00
Daan Leijen
e6ab602ca1 add comment 2022-11-21 10:24:02 -08:00
Daan Leijen
35d332141d experimental destroy_on_exit option for statically linked mimalloc in a dynamically unloaded DLL 2022-11-18 11:00:23 -08:00
Daan Leijen
18cf94dff6 move keys field in the page struct to keep offsets in the fast path the same for different build variants 2022-11-18 10:14:37 -08:00
Daan Leijen
8834e128e8 improve mi_free codegen 2022-11-18 10:13:51 -08:00
daan
2479d168ad decommit unused prefix of large aligned blocks 2022-11-07 16:41:40 -08:00
daan
27fc2cf17e fix random initializer 2022-11-07 14:57:07 -08:00
daan
56ab9ee06a update azure pipeline to ubuntu 22.04 2022-11-07 14:55:36 -08:00
daan
841172bd7d fix link error on windows 2022-11-07 14:51:07 -08:00
daan
3e1d800e9b potential fix for windows static linking with thread creation in dll's 2022-11-07 14:47:53 -08:00
daan
312ce6f916 bump version to v1.7.8 for further development 2022-11-07 11:36:44 -08:00
daan
2daec6c72f add more comments 2022-11-07 11:23:04 -08:00
daan
1f12c3dd12 remove MI_ALIGNMENT_MAX and add comments 2022-11-07 11:13:42 -08:00
daan
711aad7a75 refactor arena allocation 2022-11-07 11:13:29 -08:00
Daan
d1ae630dec Merge branch 'dev-align' of https://github.com/microsoft/mimalloc into dev-align 2022-11-06 14:51:37 -08:00
Daan
3eb616f2bf fix bug in secure mode where adjustment would make the page size less than the blocksize on the first page of a segment 2022-11-06 14:51:06 -08:00
daan
f788e3c9a3 add comment 2022-11-06 14:18:52 -08:00
Daan
d3715132d1 move null ptr check 2022-11-06 09:52:54 -08:00
Daan
f54e64365f fix assertions with incorrect block size for large alignments 2022-11-06 09:44:12 -08:00
daan
a200291ae5 further progress on removing aligned limit 2022-11-06 08:26:17 -08:00
daan
4b91ff760d initial working large alignment 2022-11-05 16:40:42 -07:00
daan
6a80fa3ac1 initial progress on removing alignment limit 2022-11-05 14:46:52 -07:00
daan
fe61be80bf update to v1.7.7 v1.7.7 2022-11-03 17:03:57 -07:00
daan
3bf299cd2b add comment on crash on Windows server 2019 2022-11-02 10:56:13 -07:00
daan
6e0f10dfd8 potential fix for link error with clang-cl (issue #631) 2022-11-02 10:25:46 -07:00
daan
5ad06f9997 fix compiler warning on unused parameter (issues #251) 2022-11-02 09:50:49 -07:00
daan
2d3f0e5b7a fix align5 test 2022-11-01 16:34:17 -07:00
daan
ad1da7cfc8 fix warnings 2022-11-01 16:29:10 -07:00
daan
e6bd41ba3f update arena_id api 2022-11-01 16:26:17 -07:00
daan
0a691ca68e fix off by one in arena id 2022-11-01 14:05:04 -07:00
daan
fe2d5aa8ff initial work on heaps restricted to specific arena's 2022-11-01 14:00:20 -07:00
daan
65eb5c65ec relax restriction of size to be an integral multiple of the alignment in 'alloc_aligned' as too many programs need this; see PR #584 2022-10-31 16:07:29 -07:00
daan
3ad4639aea fix atomic lib reference, see PR #586 2022-10-31 15:53:36 -07:00
daan
7cb1fdc44e nicer style for pc_libraries 2022-10-31 15:49:04 -07:00
daan
4dcd7e6842 fix version number in pc-config 2022-10-31 15:47:00 -07:00
Daan
907d04c27c
Merge pull request #595 from eli-schwartz/pkg-config
cmake: add pkg-config file
2022-10-31 15:42:08 -07:00
Daan
4c241139e9
Merge pull request #588 from TApplencourt/dev
Add support for IntelLLVM
2022-10-31 15:32:31 -07:00
daan
d8dd297974 add cmake option MI_WIN_REDIRECT to be able to explicitly disable linking with mimalloc-redirect on windows; always OFF on ARM, fixes issue #591 and #590 2022-10-31 15:26:21 -07:00
daan
c4663463d1 add mi_cdecl to functions to avoid errors when compiling with a different calling convention, see PR #592 2022-10-31 12:16:34 -07:00
daan
698bb2cae7 split out _mi_page_try_use_delayed_free for contention reduction (issue #630) 2022-10-31 11:01:01 -07:00
daan
7bef5f5f5b reduce contention on the delayed_free lock; see issue #630 2022-10-31 10:34:55 -07:00
daan
bdc9dc3e4e update vs project for valgrind 2022-10-31 10:12:13 -07:00
daan
751e456767 possible fix for warning in issue #635 2022-10-31 08:34:20 -07:00
daan
0a8d7d98d8 fix valgrind link 2022-10-30 19:18:02 -07:00
daan
74117d329d fix realloc memory tracking in valgrind 2022-10-30 19:00:54 -07:00
daan
0ea5235cd1 update readme for valgrind 2022-10-30 14:55:32 -07:00
daan
72c4f0d2ab update readme 2022-10-30 14:53:11 -07:00
daan
640376a500 update readme 2022-10-30 14:52:26 -07:00
daan
74d002b61c better cmake process for MI_VALGRIND 2022-10-30 14:20:35 -07:00
daan
05a75758dd fix tests 2022-10-30 14:07:41 -07:00
daan
886fd7d1b8 add cmakefile MI_VALGRIND option 2022-10-30 12:49:29 -07:00
daan
b48040e20a set pages to noaccess explicitly for valgrind precision 2022-10-30 12:23:11 -07:00
daan
6e11a054a4 further improve precision of malloc/free tracking in valgrind 2022-10-30 12:03:14 -07:00
daan
84c706508c fix false positives from valgrind in rptest 2022-10-30 10:45:51 -07:00
daan
a1f5a5d962 fix various false positives in test-stress from valgrind 2022-10-29 14:37:55 -07:00
daan
c61b365e76 valgrind works on test-stress 2022-10-29 11:51:04 -07:00
daan
eee7c40da5 updates to run valgrind on test-api 2022-10-29 11:43:09 -07:00
daan
bc8f23aa0d rename track macros to lowercase 2022-10-29 10:44:10 -07:00
daan
093724bdef add test file for valgrind integration 2022-10-28 20:07:31 -07:00
daan
6eeb81ee05 initial progress on valgrind integration 2022-10-28 19:54:56 -07:00
Eli Schwartz
eb97236652
cmake: add pkg-config file
pkg-config allows using the library in build systems that are not cmake,
by exporting the same information from the cmake -config files in a
buildsystem-neutral format.

Fixes #16
2022-06-19 14:45:44 -04:00
Thomas Applencourt
8cb6ba2221 add support for IntelLLVM 2022-06-06 16:18:33 +00:00
Daan Leijen
eb29d6b06f fix warning on windows 2022-05-21 10:21:38 -07:00
Daan Leijen
864e4be5ce add is_aligned check 2022-04-20 17:33:31 -07:00
Daan Leijen
d9f6ab58c5 comments 2022-04-19 20:16:49 -07:00
Daan Leijen
f76a678c04 fix mi_likely macro in debug build 2022-04-19 19:59:45 -07:00
Daan Leijen
cea47b8560 compile with /Zc:__cplusplus in vs2022 2022-04-19 19:56:53 -07:00
Daan Leijen
7bc602ebb4 redefine mi_likely/mi_unlikely to work with C++ 20 [[likely]] attributes 2022-04-19 19:50:06 -07:00