Daan Leijen
65402836ae
comments
2023-03-20 11:30:52 -07:00
Daan Leijen
e24e1125ee
bump version to 1.8.0
2023-03-20 11:03:50 -07:00
Daan Leijen
0509d11ac5
more comments
2023-03-20 11:02:16 -07:00
Daan Leijen
ec5f4904b0
more comments
2023-03-20 11:01:40 -07:00
Daan Leijen
f58357548c
restructure header files
2023-03-20 10:37:39 -07:00
Daan Leijen
17a20f280b
dont track ETW by default
2023-03-16 20:16:31 -07:00
Daan Leijen
1a99efc671
integrate ETW windows event tracing into mimalloc as another track tool
2023-03-16 20:08:43 -07:00
Xinglong He
072316bd33
add etw support
2023-03-16 17:47:20 -07:00
Daan Leijen
c4c96d2f8d
update older vs ide projects
2023-03-15 20:38:10 -07:00
Daan Leijen
e937070cf1
Merge branch 'dev' into dev-platform
2023-03-15 20:33:35 -07:00
Daan Leijen
824fd8a7b1
fix issue #707 ; rename a local template parameter (destroy) to work around two-phase template resolve in msvc 2019
2023-03-15 20:31:52 -07:00
Daan Leijen
9a2dbf373e
move thread init to primitives
2023-03-15 13:35:23 -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
10f62eb5a1
add c primitives, move getenv into primitives
2023-03-14 18:10:00 -07:00
Daan Leijen
08a01d26dc
initial commit of new primitive layer
2023-03-14 16:54:46 -07:00
Daan Leijen
2e6ab0f230
add documentation for tracking tools; rename with prefix MI_TRACK_tool
2023-03-06 09:02:38 -08:00
Daan Leijen
465eb81d30
track free blocks in valgrind for heap_destroy as well
2023-03-05 18:18:41 -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 Leijen
6a230f8329
fix compilation of heap specific STL allocators for vs2017
2023-02-07 11:07:52 -08:00
Daan Leijen
4cebb48062
bump version to v1.7.9
2022-12-23 13:29:06 -08:00
Daan Leijen
4d1e74aadd
add comment
2022-12-19 18:01:58 -08:00
Daan Leijen
8c89a77064
add default constructors to stl heap allocators
2022-12-19 17:25:49 -08:00
Daan
51e2be6647
Merge branch 'dev' into fix-const
2022-12-19 17:10:54 -08: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
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
Vadim Markovtsev
4cdfc18888
Refactor C++ allocators to be DRY and protected
2022-11-24 15:13:19 +01:00
Daan Leijen
969d8bc5fe
make huge pages part of the regular page queues again
2022-11-22 20:56:35 -08:00
Daan Leijen
78690fbec2
fix proteced status in stl allocator (pr #625 )#
2022-11-22 18:41:51 -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 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
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
d3715132d1
move null ptr check
2022-11-06 09:52:54 -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
2022-11-03 17:03:57 -07:00
daan
5ad06f9997
fix compiler warning on unused parameter (issues #251 )
2022-11-02 09:50:49 -07:00
daan
e6bd41ba3f
update arena_id api
2022-11-01 16:26:17 -07:00
daan
fe2d5aa8ff
initial work on heaps restricted to specific arena's
2022-11-01 14:00:20 -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
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
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
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
6eeb81ee05
initial progress on valgrind integration
2022-10-28 19:54:56 -07:00
Daan Leijen
864e4be5ce
add is_aligned check
2022-04-20 17:33:31 -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
Daan Leijen
d69d4c861f
add zero parameter to primitive allocation to improve codegen for calloc etc
2022-04-19 18:32:35 -07:00
Daan Leijen
f4744bd192
fix further annotation warnings for vs2022
2022-04-19 17:35:07 -07:00
Daan Leijen
ca0bac743d
maintain backward compatible option order
2022-04-14 16:10:36 -07:00
Daan Leijen
f87cba9bd8
add max segment reclaim as an option
2022-04-14 16:05:49 -07:00
Daan Leijen
6c91c75b14
remove thread local segment cache
2022-04-09 14:33:20 -07:00
Daan Leijen
e18a8cd72e
add heap walk test
2022-04-08 16:58:32 -07:00
Daan Leijen
5c7ada4b20
Merge branch 'dev' of https://github.com/microsoft/mimalloc into dev
2022-04-08 16:37:08 -07:00
Daan
b7677b6f84
fix atomic warnings on clang14 (issue #571 )
2022-04-08 14:09:38 -07:00
Daan Leijen
3c7ce7d3c6
improve mi_realloc codepath
2022-04-07 19:09:31 -07:00
Daan
db87d6a99c
add delete nothrow variants for aligned deletion as well (see #551 )
2022-02-22 13:49:39 -08:00
Daan
3c669a70f3
Merge pull request #551 from sicherha/override-nothrow-delete
...
Fix compatibility with GNU libstdc++ < 9
2022-02-22 13:44:01 -08:00
Christoph Erhardt
096b9015dc
Fix compatibility with GNU libstdc++ < 9
...
So far, mimalloc does not override the `nothrow` variants of the
`delete` operator because it assumes that their implementation in the
C++ standard library redirects to the default `delete` operators. This
is not the case for GNU libstdc++ < 9, where `std::free()` is called
directly.
This issue might be the cause for the crashes reported in #261 .
Upstream bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68210
This commit ensures that the `nothrow` `delete` operators are properly
overridden by mimalloc.
2022-02-22 21:30:23 +01:00
Daan
ec2265486e
bump version for further development
2022-02-14 16:47:57 -08:00
Daan
817569dfad
bump to version x.0.5
2022-02-14 16:34:18 -08:00
Daan
c6f32c9533
Merge pull request #528 from michaeljclark/mimalloc-fixes
...
mimalloc-types: amend comment adding medium to list of page kinds
2022-02-02 19:57:50 -08:00
Daan
32da74e032
Merge pull request #539 from devnexen/obsd_asm_fix
...
tls revives inline asm for openbsd
2022-02-02 19:45:39 -08:00
Daan
f515b80093
update documentation on options
2022-02-02 19:19:03 -08:00
David Carlier
b1e1b0573c
tls revives inline asm for openbsd
2022-01-27 07:01:32 +00:00
Michael Clark
9da8788dae
mimalloc-types: amend comment adding medium to list of page kinds
2022-01-19 10:14:08 +13:00
Daan
55b4d5e2b1
Merge pull request #517 from tiran/debug-uninit
...
Allow overrides of MI_DEBUG memory constants
2022-01-10 16:12:10 -08:00
Daan
4fc63358a6
update copyright year
2022-01-10 12:01:26 -08:00
Daan
4b63c76861
avoid conditional load on macos
2022-01-10 11:40:36 -08:00
Christian Heimes
0353fc38dd
Allow overrides of MI_DEBUG memory constants
...
CPython and Windows CRT debug builds use different values for uninit,
freed, and padding bytes. Make ``MI_DEBUG_*`` constants conditional to
allow embedders to override the constants.
Windows dbgheap:
```
_bNoMansLandFill = 0xFD
_bDeadLandFill = 0xDD
_bCleanLandFill = 0xCD
```
Python memory debug
```
PYMEM_CLEANBYTE 0xCD
PYMEM_DEADBYTE 0xDD
PYMEM_FORBIDDENBYTE 0xFD
```
Signed-off-by: Christian Heimes <christian@python.org>
2022-01-05 13:22:47 +01:00
daan
43e5cd2671
revise assembly test for the _mi_threadid(); fix issue #495 with musl libc on arm; test specifically for bionic libc on Android
2022-01-01 15:54:06 -08:00
Daan
6ead2840ec
Merge pull request #504 from res2k/tweak-stats-doc
...
Tweak documentation for mi_heap_area_t::used.
2021-12-20 17:44:52 -08:00
Frank Richter
ff3bb5ce7b
Tweak documentation for mi_heap_area_t::used.
...
For microsoft/mimalloc#503 .
2021-12-19 14:51:15 +01:00
Daan Leijen
89090510bd
update alignment tests
2021-12-18 11:11:44 -08:00
daan
30a99e2c51
default to portable C for the thread id on arm 32-bit, issue #495
2021-12-17 13:48:39 -08:00
daan
89f583a69b
improve aligned allocation performance
2021-12-17 13:18:05 -08:00
daan
684c2c82a7
restrict max aligment boundary to prevent bug with segment determination (found by Matthew Parkinson).
2021-12-17 11:40:46 -08:00
daan
55ccc94707
wip: fix zero init for sbrk; add lock around sbrk
2021-12-15 19:28:34 -08:00
daan
82a0e56f35
fix warning on mi_reallocarr
2021-12-15 18:54:57 -08:00
Daan
4a586808f7
merge
2021-12-15 16:52:36 -08:00
Daan
317093d78b
fix Android overriding (issue #381 and PR #487 )
2021-12-15 16:48:57 -08:00
Daan
17456f18d1
Merge pull request #489 from devnexen/remove_dfbsd_warning
...
removes dragonflybsd warning since the api and library overriding wor…
2021-12-15 16:37:56 -08:00
Daan
1b09877bc4
Merge branch 'dev' into netbsd_reallocarr
2021-12-15 16:27:26 -08:00
Daan
523e6d5c9b
fix thread slot on arm32 (issue #495 )
2021-12-15 16:05:07 -08:00
Daan
69b6b24688
further improvements to installation directories
2021-12-14 18:29:14 -08:00
Daan
c858690dea
Merge branch 'dev' of https://github.com/microsoft/mimalloc into dev
2021-12-12 10:35:19 -08:00
Daan
3a212d1895
fix assembly for mi_tls_slot_set on x32 and x64. Issue #488
2021-12-12 10:35:13 -08:00
David Carlier
d6a56dd99d
introduces netbsd's reallocarr overriding.
...
and couple of tests.
2021-12-01 22:43:13 +00:00
DC
20e37bf7c1
removes dragonflybsd warning since the api and library overriding works, also
...
for the os doc report purpose.
2021-11-28 08:14:21 +00:00
daan
9183b1eec0
remove experiment with unsafe_free_with_threadid
2021-11-23 19:04:41 -08:00
daan
8b60a5ab70
add mi_unsafe_free_with_threadid and mi_get_current_threadid()
2021-11-23 17:59:27 -08:00
daan
85eccf324f
Merge branch 'master' into dev
2021-11-14 16:44:54 -08:00
Daan
4a590b1447
bump version number to 1.7.3
2021-11-14 15:33:56 -08:00
Daan
d67ff1ca9f
add include cstdef for std::size_t in C++
2021-11-14 15:32:43 -08:00
Daan
9c9c3a0311
Merge pull request #485 from devnexen/builtin_overflow_sig_fix
...
fix spurious build warning with overflow builtins
2021-11-14 14:47:38 -08:00
daan
4b0cda2012
take overcommit into account for eager commit delay
2021-11-14 11:23:11 -08:00
daan
28896e5b19
prefix UNUSED,KiB,MiB,GiB; add mi_threadid_t type; add mi_ssize_t
2021-11-13 14:46:03 -08:00
daan
f9ac60a90f
suppres eager commit delay for the first 4 threads
2021-11-12 19:03:20 -08:00
Daan
e853f530a0
add noexcept attributes to improve mi_free codegen
2021-11-04 18:54:57 -07:00
Daan
751a2249c8
add mi_decl_externc, nice layout
2021-11-02 21:53:20 -07:00
Daan
5360639748
add mi_malloc_good_size
2021-11-02 21:52:00 -07:00
dc
5b0e73281f
fix spurious build warning with overflow builtins
2021-10-28 22:43:21 +01:00
Daan
f38956568c
only set visibility attribute when compiling for a shared library
2021-10-27 17:01:12 -07:00
Christian Heimes
13de1920ae
Rename _os_random_weak to _mi_os_random_weak
...
The ``_os_random_weak`` function is the only non-static function
besides ``_ZSt15get_new_handlerv`` that is not prefixed with ``mi`` or
``_mi``.
The discrepancy was discovered by CPython's smelly script. The checker
looks for exported symbols that don't have well-defined prefixes.
Signed-off-by: Christian Heimes <christian@python.org>
2021-10-21 21:40:45 +02:00
Daan
75987e4590
Merge pull request #410 from jserv/enforce-binary-prefix
...
Distinguish SI and Binary Prefixes
2021-10-19 12:28:33 -07:00
Daan
6068a8bb1b
Merge pull request #420 from hankluo6/typo
...
Fix typo
2021-10-19 12:17:44 -07:00
Daan
20a3eee6f0
Merge pull request #449 from bmalrat/FixTypo
...
Fixed typo in header
2021-10-19 10:24:54 -07:00
Daan
5b9409f4d6
add space after _Atomic to prevent errors on msvc without /TP (see PR #452 )
2021-10-19 10:17:30 -07:00
Daan
1917fbd847
Merge pull request #467 from tiran/strict_prototypes
...
Fix strict function prototype warnings
2021-10-19 09:35:40 -07:00
Christian Heimes
7c73e3996d
Fix strict function prototype warnings
...
Fix warning ``warning: function declaration isn’t a prototype`` when
building mimalloc with ``-Wstrict-prototypes`` flag. In C argumentless
functions should be declared as ``func(void)``.
Reproducer:
```shell
$ cmake ../.. -DCMAKE_C_FLAGS="-Wstrict-prototypes"
$ make VERBOSE=1
```
Co-authored-by: Sam Gross <colesbury@gmail.com>
Co-authored-by: Neil Schemenauer <nas@arctrix.com>
Signed-off-by: Christian Heimes <christian@python.org>
2021-10-19 10:48:26 +02:00
Daan Leijen
9c5928060e
Merge branch 'dev' of https://github.com/microsoft/mimalloc into dev
2021-10-01 15:10:42 -07:00
Daan Leijen
679aad0659
update wasm support with emscripten compilation; now using sbrk instead of wasm_memory_grow
2021-10-01 15:05:01 -07:00
paulip1792
a2c3b0f8af
add option to reserve huge os pages at a specific numa node.
2021-08-10 16:30:44 +08:00
bmalrat
30be78d97a
Fixed typo in headers
2021-08-04 17:31:48 -04:00
Jim Huang
4369fe4323
Eliminate preprocessor warnings due to undefined "__GNUC__" with ClangCL
...
When building some code against mimalloc with C inside Visual Studio
with ClangCL, the compiler complains about __GNUC__ being undefined.
Reported by Mojca Miklavec.
Close #422
2021-06-24 17:29:06 +08:00
hank
1c1571742d
fix typo
2021-06-21 22:36:47 +08:00
Daan Leijen
728be93977
fix for #414 making numa node count atomic
2021-06-17 19:38:51 -07:00
Daan Leijen
a83bca72b3
fixes for M1; disable interpose use zones; fix pedantic warnings
2021-06-17 19:15:09 -07:00
Daan Leijen
aeb62c2711
fix double quote includes
2021-06-07 16:50:31 -07:00
Daan Leijen
4ba32c3160
Revert "make all includes relative"
...
This reverts commit 1feb6123d90f5557a0fc1bc2afc72401e58f8cb0.
2021-06-07 16:47:57 -07:00
Daan Leijen
1feb6123d9
make all includes relative
2021-06-06 20:31:36 -07:00
Jim Huang
0f57425f80
Distinguish SI and Binary Prefixes
...
SI prefixes [the decimal prefixes] refer strictly to powers of 10. They
should not be used to indicate powers of 2. e.g., one kilobit
represents 1000 bits instead of 1024 bits. IEC 60027‐2 symbols are
formed adding a "i" to the SI symbol (e.g. G + i = Gi).
2021-05-30 20:13:28 +08:00
Jim Huang
5940d3bcce
Bump copyright date
...
Each source file has been changed according to relevant Git activities.
2021-04-24 16:35:11 +00:00
Daan
766f1f9345
Merge pull request #388 from nico-abram/patch-2
...
Fix typo in comment
2021-04-22 10:34:13 -07:00
Daan
f941015928
Merge pull request #384 from kdrag0n/fix-android-thread-id
...
Fix thread ID getter on Android ARM/AArch64
2021-04-22 10:33:53 -07:00
Jim Huang
3402c6cc3f
Revise the use of macOS predefined macro
...
Quoted from "Porting UNIX/Linux Applications to OS X,"[1]
* macro __MACH__ is defined if Mach system calls are supported;
* macro __APPLE__ is defined in any Apple computer.
__MACH__ is not specific to macOS since GNU/Hurd runs on a Mach-based
microkernel (gnumach) [2]. __MACH__ is defined by the compiler,
leading to potential confusions. The solution is just changing the
checked identifier (i.e. __APPLE__), so it is really used only on
macOS.
[1] https://developer.apple.com/library/archive/documentation/Porting/Conceptual/PortingUnix/compiling/compiling.html
[2] https://www.gnu.org/software/hurd/microkernel/mach/gnumach.html
2021-04-21 15:24:02 +08:00
unknown
8311cef0d1
Fix typo in comment
...
it -> if in mimalloc-types.h
2021-04-17 15:08:25 -03:00
Danny Lin
ad2fa2bf6f
Fix thread ID getter on Android ARM/AArch64
...
Android's Bionic libc stores the thread ID in TLS slot 1 instead of 0
on 32-bit ARM and AArch64. Slot 0 contains a pointer to the ELF DTV
(Dynamic Thread Vector) instead, which is constant for each loaded DSO.
Because mimalloc uses the thread ID to determine whether operations are
thread-local or cross-thread (atomic), all threads having the same ID
causes internal data structures to get corrupted quickly when multiple
threads are using the allocator:
mimalloc: assertion failed: at "external/mimalloc/src/page.c":563, mi_page_extend_free
assertion: "page->local_free == NULL"
mimalloc: assertion failed: at "external/mimalloc/src/page.c":74, mi_page_is_valid_init
assertion: "page->used <= page->capacity"
mimalloc: assertion failed: at "external/mimalloc/src/page.c":100, mi_page_is_valid_init
assertion: "page->used + free_count == page->capacity"
mimalloc: assertion failed: at "external/mimalloc/src/page.c":74, mi_page_is_valid_init
assertion: "page->used <= page->capacity"
Add support for Android's alternate TLS layout to fix the crashes in
multi-threaded use cases.
Fixes #376 .
2021-04-07 01:59:47 -07:00
Daan Leijen
985f313b35
bump version to 1.7.1
2021-04-06 10:56:26 -07:00
Daan Leijen
71ac98ab08
rename <Windows.h> include to <windows.h> for mingw compatibility (see pr #367 )
2021-02-22 13:04:11 -08:00
Daan Leijen
331491e1e8
build fix for Apple M1 (issue #354 and pr #356 )
2021-02-02 10:46:30 -08:00
Daan Leijen
a7c33a3b0e
fix getting the unique thread id on the Apple M1, see issue #354 .
2021-02-01 15:47:22 -08:00