918 Commits

Author SHA1 Message Date
daanx
461df1e878 implement arena exclusive heap allocation for dev 2023-04-04 15:40:43 -07:00
daanx
77766e20a6 use only arena's instead of regions 2023-04-04 14:58:06 -07:00
daanx
1d231be758 clarify needs_recommit 2023-04-04 13:05:48 -07:00
daanx
b6603c2ee0 merge from dev-reset 2023-04-04 13:02:06 -07:00
daanx
5c39fe7246 decommit returns whether re-commit is needed 2023-04-04 12:57:18 -07:00
daanx
a836d233ff merge from dev-reset 2023-04-04 12:27:47 -07:00
daanx
449aad0635 wip: purgeable arenas; update option names and improve arena reservation 2023-04-04 12:15:57 -07:00
daanx
33d7503fdb rename to arena_eager_commit 2023-04-03 19:57:26 -07:00
daanx
d22a13c990 wip: purgeable arenas, various fixes 2023-04-03 17:58:28 -07:00
daanx
a9f42376b7 small changes; make minimal commit most fine grained 2023-04-03 16:17:02 -07:00
daanx
f5ab38f87b wip: use purge throughout for segments and arenas; more agressive delays 2023-04-03 15:06:09 -07:00
daanx
e96af1dba0 Merge branch 'dev-slice' into dev-slice-reset 2023-04-03 12:48:30 -07:00
daanx
a5b47fe17b Merge branch 'dev' into dev-reset 2023-04-03 12:46:00 -07:00
daanx
5e4f7d332e bump version for further development 2023-04-03 12:45:30 -07:00
daanx
92556e0e62 bump version for further development 2023-04-03 12:45:04 -07:00
Daan Leijen
f4e006fa76 merge from dev-reset 2023-03-31 21:10:25 -07:00
Daan Leijen
595add5e3d wip: initial work on purgable arenas 2023-03-31 20:51:35 -07:00
Daan Leijen
7cf60deb12 wip: initial delayed purging of arenas 2023-03-31 14:07:59 -07:00
Daan Leijen
f8faa8f2a1 Merge branch 'dev-slice' into dev-slice-reset 2023-03-31 10:44:14 -07:00
Daan Leijen
1a57a53b75 Merge branch 'dev' into dev-reset 2023-03-31 10:31:43 -07:00
Daan Leijen
14fdd9a102 Merge branch 'dev' into dev-slice 2023-03-31 10:25:49 -07:00
Daan Leijen
d3ec7f378e fix compile on ppc64IE and s390x arches (issue #717) 2023-03-31 10:25:32 -07:00
Daan Leijen
8c526622ff merge from dev-reset 2023-03-30 16:24:10 -07:00
Daan Leijen
6eee9e4be2 add option eager_reserve 2023-03-30 16:20:11 -07:00
Daan Leijen
9c544aba41 bump version for further development 2023-03-30 09:27:21 -07:00
Daan Leijen
f08d9d489c bump version for further development 2023-03-30 09:19:35 -07:00
Daan Leijen
391f8bbd72 merge from dev 2023-03-28 10:00:18 -07:00
Daan Leijen
176b6e6aa0 add mi_arena_is_os_allocated 2023-03-28 09:59:41 -07:00
Daan Leijen
4c681cffe0 merge from dev 2023-03-28 09:27:06 -07:00
Daan Leijen
9792b6364d move more prototypes in internal.h for safety 2023-03-28 09:25:32 -07:00
Daan Leijen
165b847051 improve segment_cache assertions 2023-03-23 16:11:38 -07:00
Daan Leijen
b0ba746307 merge from dev 2023-03-20 14:28:21 -07:00
Daan Leijen
c92e9e7bf7 add comment that thread id's should not be zero, issue #698 2023-03-20 14:01:09 -07:00
Daan Leijen
268dceaa12 Merge branch 'dev' into dev-slice 2023-03-20 13:55:47 -07:00
Daan Leijen
0b4c3da2e9 make process init race free (issue #701) 2023-03-20 13:55:39 -07:00
Daan Leijen
4a18fa3775 Merge branch 'dev-platform' into dev-slice-platform 2023-03-20 11:31:03 -07:00
Daan Leijen
65402836ae comments 2023-03-20 11:30:52 -07:00
Daan Leijen
3fc30c4a1e merge from dev, version bump to 2.1.0 2023-03-20 11:05:18 -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
eca98ac056 Merge branch 'dev-platform' into dev-slice-platform 2023-03-16 20:17:01 -07:00
Daan Leijen
17a20f280b dont track ETW by default 2023-03-16 20:16:31 -07:00
Daan Leijen
1e8769ec95 Merge branch 'dev-platform' into dev-slice-platform 2023-03-16 20:11:59 -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
61ae0d1d5e merge from dev-platform 2023-03-15 20:42:59 -07:00
Daan Leijen
c4c96d2f8d update older vs ide projects 2023-03-15 20:38:10 -07:00
Daan Leijen
4da64ac904 Merge branch 'dev-slice' into dev-slice-platform 2023-03-15 20:33:52 -07:00
Daan Leijen
e937070cf1 Merge branch 'dev' into dev-platform 2023-03-15 20:33:35 -07:00
Daan Leijen
c80e2d5b03 Merge branch 'dev' into dev-slice 2023-03-15 20:33:16 -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
65bbe4014f merge from dev-platform 2023-03-15 15:10:12 -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
8184e9de1f Merge branch 'dev' into dev-slice 2023-03-06 10:29:27 -08: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
d0eebedfbf merge from dev 2023-03-05 22:15:07 -08:00
Daan Leijen
465eb81d30 track free blocks in valgrind for heap_destroy as well 2023-03-05 18:18:41 -08:00
Daan
b3176ada74 merge from dev, fix commit size in asan tracking 2023-03-05 11:17:39 -08:00
Daan
056c2ce45b match track free size to tracked malloc size 2023-03-05 11:01:51 -08:00
Daan
f32b42e6cc Merge branch 'dev' into dev-slice 2023-03-04 16:03:22 -08:00
Daan
3c906bde8b better track_free_size 2023-03-04 15:17:13 -08:00
Daan
e4b9ea918f merge from dev 2023-03-04 14:52:30 -08:00
Daan
6dcebdc303 fix sizes in memory tracking and padding for huge alignments 2023-03-04 14:49:02 -08:00
Daan Leijen
5fe4a3480f revert default max align commit back to 16 2023-02-20 12:21:06 -08:00
daan
8be4cee418 change max align size to 8 2023-02-20 12:15:26 -08:00
Daan Leijen
e7b941a136 Merge branch 'dev' into dev-slice 2023-02-07 11:08:10 -08:00
Daan Leijen
6a230f8329 fix compilation of heap specific STL allocators for vs2017 2023-02-07 11:07:52 -08:00
Daan Leijen
28cf67e5b6 bump version to 2.0.9 2022-12-23 13:31:56 -08:00
Daan Leijen
4cebb48062 bump version to v1.7.9 2022-12-23 13:29:06 -08:00
Daan Leijen
9b2dd0d757 Merge branch 'dev' into dev-slice 2022-12-19 18:02:13 -08:00
Daan Leijen
4d1e74aadd add comment 2022-12-19 18:01:58 -08:00
Daan Leijen
35997c0384 Merge branch 'dev' into dev-slice 2022-12-19 17:38:53 -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
Daan Leijen
92ffc25d79 merge from dev 2022-12-19 17:08:45 -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
6304bbec6e Merge branch 'dev' into dev-slice 2022-11-28 11:12:52 -08:00
Daan Leijen
ddc9841019 fix parameters for mi_track_free 2022-11-28 11:12:35 -08:00
Daan Leijen
911ea81630 Merge branch 'dev' into dev-slice 2022-11-28 10:55: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
90c8f0516c Merge branch 'dev' into dev-slice 2022-11-28 09:18:04 -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
447c2f18c5 Merge branch 'dev' into dev-slice 2022-11-27 13:00:30 -08: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
ed82aa90ea merge from dev where huge objects are now part of page queues again 2022-11-22 21:54:58 -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
85b5fa11bc merge segment_init refactoring from dev 2022-11-22 19:03:26 -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
83c027c4bf fix medium page size to 512k 2022-11-21 18:56:56 -08:00
Daan Leijen
c007747169 back to 64k pages but 32MiB segments and a 1MiB minimal commit size 2022-11-21 15:03:15 -08:00
Daan Leijen
1a7f6f376d move threadid field 2022-11-21 10:22:50 -08:00
Daan Leijen
163afcce75 merge from dev with the destroy_on_exit option 2022-11-21 10:03:52 -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
7ebd1c6daf merge from dev 2022-11-18 10:22:45 -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 Leijen
82a765a255 experiment with 32KiB slices and increased MI_MIN_EXTEND 2022-11-18 09:38:01 -08:00
Daan Leijen
b940543cd5 experiment with smaller segment size (32MiB) and finer minimal commit (1MiB) 2022-11-17 18:57:45 -08:00
daan
89ba6cc2fa merge from dev 2022-11-07 16:48:00 -08:00
daan
2479d168ad decommit unused prefix of large aligned blocks 2022-11-07 16:41:40 -08:00
daan
c26c5da016 Merge branch 'dev' into dev-slice 2022-11-07 14:51:18 -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
5d6b149ea9 bump version to v2.0.8 for further development 2022-11-07 11:37:22 -08:00
daan
312ce6f916 bump version to v1.7.8 for further development 2022-11-07 11:36:44 -08:00
daan
c55cc260ab merge from dev-align 2022-11-07 11:29:03 -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
1632dd73c9 remove superfluous asserts 2022-11-06 21:03:23 -08:00
daan
651a99b35d refine last slice setting for large alignments 2022-11-06 20:57:27 -08:00
daan
562efed54d fix full SEGMENT_SIZE internal alignment by adding one more slice entry 2022-11-06 20:36:51 -08:00
daan
4814a649be merge from dev-align 2022-11-06 16:23: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
f859190cba update to v2.0.7 2022-11-03 17:05:38 -07:00
daan
fe61be80bf update to v1.7.7 2022-11-03 17:03:57 -07:00
daan
6f8e115980 Merge branch 'dev' into dev-slice 2022-11-02 09:51:03 -07:00
daan
5ad06f9997 fix compiler warning on unused parameter (issues #251) 2022-11-02 09:50:49 -07:00
daan
933713292c merge from dev 2022-11-01 16:27:50 -07:00
daan
e6bd41ba3f update arena_id api 2022-11-01 16:26:17 -07:00
daan
9f36808a7f initial api for heaps restricted to a certain arena 2022-11-01 16:22:51 -07:00
daan
e961ef705e merge arena_id from dev 2022-11-01 14:16:49 -07:00
daan
fe2d5aa8ff initial work on heaps restricted to specific arena's 2022-11-01 14:00:20 -07:00
daan
3f122692eb Merge branch 'dev' into dev-slice 2022-10-31 11:01:10 -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
4442fda895 Merge branch 'dev' into dev-slice 2022-10-31 10:35:05 -07:00
daan
7bef5f5f5b reduce contention on the delayed_free lock; see issue #630 2022-10-31 10:34:55 -07:00
daan
c128cf69be fix alignment_max for 32-bit systems (unfortunately, we need to include stdint.h now) 2022-10-30 19:47:54 -07:00
daan
66525ccae3 merge from dev-track 2022-10-30 14:31:21 -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
cacb387a61 Merge branch 'dev' into dev-slice 2022-04-20 17:34:56 -07:00
Daan Leijen
864e4be5ce add is_aligned check 2022-04-20 17:33:31 -07:00
Daan Leijen
83d84b8703 increase max alignment limit to 16MiB (issue #576) 2022-04-20 09:54:24 -07:00
Daan Leijen
413141ae29 merge from dev 2022-04-19 19:55:03 -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
487b401b26 Merge branch 'dev' into dev-slice 2022-04-19 18:43:32 -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
b86bbbff00 merge from dev 2022-04-14 16:07:57 -07:00
Daan Leijen
f87cba9bd8 add max segment reclaim as an option 2022-04-14 16:05:49 -07:00
Daan Leijen
7e492f4420 merge from dev 2022-04-09 15:07:07 -07:00
Daan Leijen
6c91c75b14 remove thread local segment cache 2022-04-09 14:33:20 -07:00
Daan Leijen
774d12f12e merge from dev 2022-04-09 13:26:38 -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 Leijen
2d8f13fb93 Merge branch 'dev-slice' of https://github.com/microsoft/mimalloc into dev-slice 2022-04-08 14:46:33 -07:00
Daan
131b62283b Merge branch 'dev' into dev-slice 2022-04-08 14:10:08 -07:00
Daan
b7677b6f84 fix atomic warnings on clang14 (issue #571) 2022-04-08 14:09:38 -07:00
Daan Leijen
6431176f4e Merge branch 'dev' into dev-slice 2022-04-07 19:09:39 -07:00
Daan Leijen
3c7ce7d3c6 improve mi_realloc codepath 2022-04-07 19:09:31 -07:00
Daan Leijen
332346b685 remove unneeded MI_HUGE_OBJ_SIZE_MAX 2022-04-07 10:38:31 -07:00
Daan
18c1891708 Merge branch 'dev' into dev-slice 2022-02-22 16:46:06 -08: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
10da1af59b merge from dev 2022-02-14 16:48:30 -08:00
Daan
ec2265486e bump version for further development 2022-02-14 16:47:57 -08:00
Daan
19edc880da merge from dev 2022-02-14 16:36:03 -08:00
Daan
817569dfad bump to version x.0.5 2022-02-14 16:34:18 -08:00
daan
8ec83f6945 increase min commit to 2 mib 2022-02-05 11:21:47 -08:00
daan
e11100a137 add minimal commit size for increased efficiency (decommit fine grained, commit coarse grained) 2022-02-05 10:57:15 -08:00
daan
0e2df71829 increase minimal commit size to 8*slice-size and add decommit_extend_delay as option 2022-02-04 16:11:38 -08:00
Daan
cbcee4dce4 merge from dev 2022-02-03 15:49:27 -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
b365623b13 merge from dev 2022-02-02 19:21:15 -08:00
Daan
f515b80093 update documentation on options 2022-02-02 19:19:03 -08:00
Daan
4e65b5018f clean up options 2022-02-02 19:01:41 -08:00
Daan
ccfe005731 decommit in abandoned pages on mi_collect 2022-02-02 17:08:05 -08:00
Daan
bd2ac3c92e collect segment cache on mi_collect 2022-02-02 16:17:21 -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
a74c05c6c0 Merge branch 'dev' into dev-slice 2022-01-10 16:21:15 -08: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
f317225a70 ignore reset_decommits option in the 2.x / dev-slice version 2022-01-10 12:10:18 -08:00
Daan
0842004b61 Merge branch 'dev' into dev-slice 2022-01-10 12:04:47 -08:00
Daan
4fc63358a6 update copyright year 2022-01-10 12:01:26 -08:00
Daan
9f9c77e6b6 Merge branch 'dev' into dev-slice 2022-01-10 11:41:12 -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
3eac4a912c Merge branch 'dev' into dev-slice 2022-01-01 16:24:41 -08:00