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
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
Daan Leijen
60c4a0fe56
fix compilation warnings for new uint16_t size for used field
2024-03-24 08:10:35 -07:00
Daan
9085596eab
update comment
2024-03-23 08:57:29 -07:00
Daan
cc809b0cd4
take 16 bits from used field to create a fast unalign path
2024-03-18 01:40:03 -07:00
Teodor Spæren
3d89f6388e
Fix std::shared_pointer calling free on provided heap pointers
2024-03-09 15:14:32 +01:00
Teodor Spæren
068dc014ec
Avoid compilation error when passing in heap to allocators
...
Before it would not work to create the mi_heap_stl_allocator types with
passing in a "mi_heap_t*", since sizeof is used and it gives a
compilation error. This change fixes that.
2024-03-09 14:13:33 +01:00
Daan
db52999d85
update used block comment (issue #861 )
2024-03-08 09:01:26 -08:00
daanx
5fe83bf327
limit reclaim from free to half the segments to prevent a pure freeing thread to reclaim too many segments
2024-03-03 17:38:50 -08:00
Daan
56d1a859ca
Merge branch 'dev' into dev-abandon
2024-03-03 09:37:53 -08:00
Daan
027b22aaf2
add arena stats
2024-03-03 09:37:46 -08:00
daanx
70e3ce07d1
Merge branch 'dev' into dev-abandon
2024-03-02 17:34:58 -08:00
Daan
683332c950
Define reallocarr as weak to avoid symbol collision on gnu/Linux. #751 by @Romain-Geissler-1A
2024-03-02 17:12:58 -08:00
Daan
e1f6516fda
Fix undefined symbol errors when building for wasi #758 , by @anuraaga
2024-03-02 17:05:29 -08:00
Daan
5d22157dc8
support tls_slot for PPC
...
#781 , by @barracuda156
2024-03-02 16:41:49 -08:00
Daan
5634527fae
add terminating quote
2024-03-02 15:26:42 -08:00
Daan
dfb5cadf33
don't use the new __builtin_thread_pointer on macOS
2024-03-02 14:06:34 -08:00
Daan Leijen
3966953b7f
prefer using __builtin_thread_pointer over assembly primitives. Fixes #851 and #852 as well.
2024-03-02 11:50:57 -08:00
daanx
500d2ad1fd
ensure non-arena segments are force purged on abandonment; make non-arena reclaim atomic
2024-03-01 18:47:59 -08:00
daanx
16c0948ee5
improve display of arenas and contained blocks
2024-03-01 16:24:28 -08:00
daanx
f5f61a65f5
bump version to 1.8.4
2024-03-01 15:14:39 -08:00
daanx
c4f1f2e079
make reclaim tries a percentage of the abandoned count
2024-03-01 14:57:46 -08:00
daanx
cf8f73098e
start abandoned search randomized
2024-03-01 10:51:18 -08:00
daanx
64edbc92dd
allow abandoned segment reclaim on a free
2024-02-29 14:58:59 -08:00
daanx
bdda13b880
track abandoned segments in an arena bitmap instead of with a list
2024-02-29 14:27:28 -08:00
Daan Leijen
36ee5f9024
avoid warning on newer clang
2023-06-30 12:21:01 -07:00
Daan Leijen
1325ee640a
avoid warning on newer clang
2023-06-30 12:16:38 -07:00
daanx
e10467f673
add libc primitives to reduce dependencies
2023-05-19 11:57:10 -07:00
daanx
4a85f32f8e
add libc.c source file
2023-05-19 10:24:39 -07:00
daanx
632edf9996
rename was_zero/committed to initially_zero/committed
2023-04-24 09:03:43 -07:00
daanx
a59ae585c7
remove allow_purge option
2023-04-23 13:04:50 -07:00
daanx
67dcbbfa43
refine c17 check for ATOMIC_VAR_INIT
2023-04-23 12:46:38 -07:00
Trout Zhang
e68010573f
Fix ATOMIC_VAR_INIT deprecation warnings for C17
2023-04-23 21:39:20 +08:00
daanx
e47adc2d22
track objects in heap destroy for ETW
2023-04-21 11:33:50 -07:00
daanx
012f716485
add is_zero flag to prim_commit
2023-04-21 10:37:22 -07:00
daanx
e6f3647556
track os alignment and base
2023-04-18 19:00:50 -07:00
daanx
09e42aea4e
clarify is_zero meaing
2023-04-18 17:41:18 -07:00
daanx
4d976270eb
review is_zero flag
2023-04-18 17:18:39 -07:00
daanx
b845be241a
wip: use memid for OS allocation
2023-04-18 16:38:47 -07:00
daanx
63ddc31d3f
fix 32-bit compile warnings
2023-04-17 12:05:33 -07:00
daanx
e03f26b035
fix atomic signature
2023-04-17 11:39:55 -07:00
daanx
a8c581059b
Merge branch 'dev' into dev-reset
2023-04-17 09:48:58 -07:00
daanx
43be9c2909
possible fix for warnings on armv6 (issue #719 )
2023-04-17 09:25:41 -07:00
daanx
a52ba65f65
further fix for atomic build error suggested by Davide Di Gennaro (issue #729 , pr #724 )
2023-04-17 09:13:08 -07:00
daanx
a655c28b66
cleanup
2023-04-16 12:29:21 -07:00
daanx
d48b988c40
clean up os api
2023-04-16 11:21:45 -07:00
daanx
0fc4de1440
use rich memid's to simplify the internal API's and invariants
2023-04-15 21:31:17 -07:00
daanx
0174d19af3
increase thread data cache to 16
2023-04-15 19:49:14 -07:00
daanx
8027fcfecd
Merge branch 'dev' into dev-reset
2023-04-15 17:59:01 -07:00
Sergey Fedorov
cd915900a2
atomic.h: unbreak build on Darwin PPC
2023-04-15 07:06:47 +08:00