692 Commits

Author SHA1 Message Date
Daan Leijen
98699c983a update to v1.8.8 2025-01-03 17:56:15 -08:00
Daan Leijen
a0a6ad3cf9 add thread_local for c++ 2025-01-03 08:17:32 -08:00
Daan
b5251a7488
Merge pull request #905 from fd00/cygwin
Build on cygwin
2024-12-30 12:31:11 -08:00
Daan
f33aa58d88
Merge branch 'dev' into dev 2024-12-30 12:27:46 -08:00
Daan Leijen
9f70ce5fcd avoid accessing heap->tld after running thread_done (pr #974) 2024-12-30 11:34:02 -08:00
Daan Leijen
9561ae4286 rename segment_map_destroy to segment_map_unsafe_destroy 2024-12-30 11:00:54 -08:00
Daan
a046b6ff33
Merge pull request #975 from jblazquez/free-segment-map
Free segment map when destroy_on_exit is set
2024-12-30 10:46:53 -08:00
Daan
095abc9e3d fix TLS slot on macOS 2024-12-26 11:16:04 -08:00
daanx
e10d0d2dee add declspec hidden to improve codegen on arm64 2024-12-26 10:33:25 -08:00
daanx
783dcb4129 add comments about TLS 2024-12-26 10:24:20 -08:00
daanx
47b5f48b29 renamed vcxproj 2024-12-26 10:08:19 -08:00
daanx
63f47569f2 fix debug_show_arenas parameters 2024-12-25 13:35:54 -08:00
daanx
587e08ccd4 improve commit stats 2024-12-25 11:12:26 -08:00
daanx
cfe73e9d48 wip: merging from upstream 2024-12-25 10:56:43 -08:00
Javier Blazquez
83dacd190e free segment map when destroy_on_exit is set 2024-12-22 22:24:13 -08:00
daanx
825dd41769 fix build error 2024-12-21 15:29:39 -08:00
daanx
476d4699ff limit purgeing to one purge cycle per purge delay 2024-12-21 15:24:46 -08:00
daanx
e3ebebb990 update lock primitive; fix arena exclusive allocation 2024-12-21 14:39:17 -08:00
daanx
93e14344c7 use srw lock on windows 2024-12-20 17:32:26 -08:00
Daan Leijen
f3d83e5fa6 insert full pages at the end of the queue; only override page candidate if the page is not too full 2024-12-20 13:55:31 -08:00
daanx
617190880d add ajust stats to compensate for double counting 2024-12-17 17:53:34 -08:00
daanx
ed31847112 fix generic ctz/clz 2024-12-09 20:45:22 -08:00
daanx
c8607a8d01 remove os_tld and stats parameters to os interface 2024-12-08 17:56:13 -08:00
Daan
9b7537755a Merge branch 'dev-steal' into dev 2024-11-25 19:28:35 -08:00
Daan
cd61eb7cf1
Merge pull request #961 from devnexen/windows_tighten_criterias
_mi_memcpy/_mi_memzero: tighten criteria for intrinsics for windows.
2024-11-25 19:25:26 -08:00
daanx
7673aa2517 ensure forced abandoned pages can be accessed after free 2024-11-25 18:41:57 -08:00
daanx
9b7ac9a1a6 clean up candidate search; add mi_collect_reduce 2024-11-25 16:58:02 -08:00
Diego Russo
3adb19c84c Fix illegal instruction for older Arm architectures
This is a port of the PR https://github.com/python/cpython/issues/125444
2024-11-25 14:23:40 +00:00
daanx
71fec8caf5 add target_segments_per_thread option 2024-11-18 15:05:22 -08:00
daanx
d57cb0765d add guarded objects that are sampled (and fit a size range). guarded sample rate etc can be set per heap as well as defaulted with options 2024-11-17 22:45:09 -08:00
daanx
8ba1879073 add sampling for guarded objects 2024-11-17 00:06:16 -08:00
daanx
8b6017d976 rename mi_debug_guarded_ to mi_guarded_ 2024-11-16 22:42:32 -08:00
daanx
498c92e348 update guarded implementation to use block tags 2024-11-16 21:15:50 -08:00
daanx
0e76fe3798 add address hint to primitive allocation API 2024-11-16 16:57:37 -08:00
daanx
b27d154ffd add virtual address bits and physical memory to the mem config 2024-11-16 15:37:08 -08:00
David Carlier
9f0a7ac0be
_mi_memcpy/_mi_memzero: tighten criteria for intrinsics for windows.
FSRM is better used for buffer <= 128 bytes and ERMS, if supported for larger
chunks.
2024-11-16 10:05:14 +00:00
Daan
5f35933331 add 0 byte to canary to prevent spurious read overflow to read the canary (issue #951, pr #953) 2024-10-27 21:39:07 -07:00
Daan
aa881733d7 reorganize primitives for process initialization; use special data segment on Windows for thread termination by default on Windows now (issue #869) 2024-10-21 22:56:59 -07:00
Daan Leijen
4234a9bd9d Merge branch 'dev-guarded' into dev 2024-08-21 11:30:33 -07:00
Daan Leijen
b9b529de28 shuffle for 128 bit 2024-08-21 10:45:19 -07:00
daanx
8899a11c70 clean up guarded pages code 2024-08-20 11:09:17 -07:00
daanx
635cf7af6a fix multi-threaded free to unprotect guarded blocks 2024-08-20 09:55:57 -07:00
daanx
0c19eb60cf initial working guarded pages 2024-08-19 21:21:40 -07:00
Daan
7b5df14bea initial work on guarded objects 2024-07-16 09:15:59 -07:00
QuarticCat
632421da3a
fix typos 2024-06-19 10:49:03 +08:00
Daan
98058eed14 add heap tag to area descriptor 2024-06-04 16:54:06 -07:00
daanx
b1188ea336 fix potential race on subproc field in the segment 2024-06-03 20:57:00 -07:00
daanx
96b69d7ef6 fix leak where OS abandoned blocks were not always reclaimed 2024-06-03 17:28:14 -07:00
daanx
3333f776f9 push os abandoned blocks at the tail end 2024-06-03 15:37:05 -07:00
Daan
7e23576efa remove old mi_abandoned_await_readers 2024-06-03 09:57:03 -07:00
Daan
2ed97f3ebb whitespace 2024-06-03 09:55:11 -07:00
Daan
58fbb67963 fix c++ compilation 2024-06-03 09:25:53 -07:00
Daan
6b15342709 fix pthread initalization of mutexes 2024-06-02 16:41:07 -07:00
daanx
5501f59f6c only reclaim for exclusive heaps in their associated arena 2024-06-02 13:16:20 -07:00
daanx
855e3b2549 add support to visit _all_ abandoned segment blocks per sub-process, upstream for python/cpython#114133 2024-06-02 09:41:12 -07:00
daanx
8f874555d5 add initial support for visiting abandoned segments per subprocess, upstream for python/cpython#114133 2024-06-02 07:47:08 -07:00
Daan Leijen
f93fb900b7 move lock code to atomic.h 2024-06-01 17:25:45 -07:00
Daan Leijen
0b3cd51249 add initial primitive api for locks 2024-06-01 16:45:20 -07:00
daanx
d9aa19a763 add support for sub-processes (to supportpython/cpython#113717) 2024-06-01 15:57:18 -07:00
daanx
616db104a9 prevent UB in arena reservation 2024-06-01 12:29:48 -07:00
Daisuke Fujimura (fd0)
78fa139a1c Build on cygwin 2024-05-30 19:38:06 +09:00
Daan
87d088b7e0 bump version to v1.8.8 for further development 2024-05-21 12:31:57 -07:00
daanx
b9b321d328 use _builtin_thread_pointer also on gcc 11-x64 and clang-14-x64 2024-05-19 20:42:28 -07:00
Daan
03224e17a0 bump cmake required version to 3.18 and detect libatomic more reliably, see pr #898 2024-05-19 13:25:31 -07:00
Daan
7ea7296d3e add malloc_good_size override maacro, see issue #900 and pr #901 2024-05-19 12:03:55 -07:00
Daan
0c4041fa53 add support for custom heap and page tags, upstream of python/cpython#113742 2024-05-19 08:06:32 -07:00
Daan
710d6138c7 refactor thread meta-data initilazation, upstream of python/cpython#113263 2024-05-18 17:42:47 -07:00
Daan
66052f135f allow custom thread id, upstream of python/cpython#115488) 2024-05-18 17:05:13 -07:00
daanx
381da05d8a make mimalloc includes relative to the current file, upstream of python/cpython#113141 2024-05-18 16:48:58 -07:00
daanx
c48a21215b fix arm64 windows compilation, upstream of python/cpython#111527 2024-05-18 16:41:39 -07:00
daanx
937fd19338 comment 2024-05-18 16:32:10 -07:00
daanx
1b21415dfa make retry on oom an option; revise size options to not overflow the long 2024-05-18 09:56:02 -07:00
Daan
5eb29e971b bump version to 1.8.7 for further development 2024-05-16 18:52:29 -07:00
Daan
a38c8dd0f9 rename must_free_whole -> has_partial_free 2024-05-16 14:41:10 -07:00
Daan
9e721e564a bump version to v1.8.6 2024-05-13 09:16:26 -07:00
Daan
13e519202a fix comments; nicer strdup/strndup 2024-05-13 09:02:40 -07:00
Daan
b1ec1d5e5a refactor aligned allocation 2024-05-11 07:22:56 -07:00
Daan
7128db7bba simplified aligned allocation; improved codegen; fix mi_good_size with padding included; add MI_MAX_ALIGN_GUARANTEE 2024-05-11 06:43:52 -07:00
Daan
1ebc28a8ff update comment 2024-05-10 15:58:37 -07:00
Daan
cc3c14f2ed use builtin_thread_pointer only on non-apple arm64 (issue #883 and #851) 2024-04-26 23:34:10 -07:00
Daan
146f9d2333 make TLS slot default instead of __builtin_thread_pointer. Potentially fixes build errors on various platforms (see issue #883) 2024-04-24 19:48:04 -07:00
Daan
77eb3a366b bump version to 1.8.5 for further development 2024-04-22 11:25:26 -07:00
Daan
a527f75161 add disallow_arena_alloc option 2024-04-22 10:10:20 -07:00
Daan
204348e468 only define WIN32_LEAN_AND_MEAN if needed 2024-04-20 16:58:58 -07:00
Daan
7247b9e326 allow configuring page and segment sizes (pr #753 and pr #862) 2024-04-20 16:45:49 -07:00
Daan
336f83fbd1 use __builtin_thread_pointer on arm64 with older gcc compilers (issue #851) 2024-04-20 16:09:45 -07:00
Daan
bf5932c3c6 use better purging for segments_collect 2024-04-19 12:43:05 -07:00
Daan
2b7530e183 add segment_collect for forced heap_collect 2024-04-19 12:33:17 -07:00
Daan
32e065bb32 rename segment_thread_collect to segment_collect 2024-04-19 12:11:58 -07:00
Daan
e21801fa02 Merge branch 'dev' of https://github.com/microsoft/mimalloc into dev 2024-04-19 10:08:02 -07:00
Daan
c13c17f1d0
Merge pull request #864 from rHermes/fix-passing-heap
Avoid compilation error when passing in heap_t to C++ allocators
2024-04-19 10:07:55 -07:00
Daan
5050b63038 define MI_MAX_ALLOC_SIZE as PTRDIFF_MAX (related to #877) 2024-04-19 09:53:21 -07:00
Teodor Spæren
10721ddbfd Remove unneeded include 2024-03-31 23:18:52 +02:00
Daan Leijen
0022802177 commend and make at least 8 tries for reclaim 2024-03-25 15:25:04 -07:00
daanx
006ae2d055 add is_huge page flag to ensure the right page queue is returned (see #868) 2024-03-24 17:07:28 -07:00
Daan Leijen
a8a53e3e85 fix double counting of free-ing for non-thread-local free calls 2024-03-24 14:50:15 -07:00
Daan Leijen
b5665f0eec add full block_size and page_start to page info 2024-03-24 14:17:17 -07:00
Daan Leijen
6688b45fbd rename MI_ALIGNMENT_MAX to MI_BLOCK_ALIGNMENT_MAX for clarity 2024-03-24 10:57:02 -07:00
Daan Leijen
07ae64bd81 faster check for NULL in mi_free by combining with masking 2024-03-24 10:39:22 -07:00
Daan Leijen
ea6137a501 use MI_MAX_ALIGN_SIZE to adjust block_offset_adj 2024-03-24 09:01:58 -07:00