daan
627892852c
merge from dev-slice
2021-11-13 15:53:57 -08:00
daan
b72065f04b
move commit mask functions to segment.c
2021-11-13 15:50:26 -08:00
daan
4f9d5f7dc6
merge from dev-slice
2021-11-13 15:33:03 -08:00
daan
f1ce9228a1
use size_t for bitmask
2021-11-13 15:29:57 -08:00
daan
88e6b52b88
fix types to size_t
2021-11-13 15:25:51 -08:00
daan
f9597ba7cb
merge from dev-slice
2021-11-13 15:18:56 -08:00
daan
83ffd92b2b
merge from dev
2021-11-13 15:16:23 -08:00
daan
09e59e0610
use size_t instead of uintptr_t where appropiate
2021-11-13 15:13:16 -08:00
daan
721486c82b
merge from dev
2021-11-13 14:52: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
0a86b45a91
Merge branch 'dev' into dev-slice
2021-11-13 14:13:12 -08:00
daan
959845540d
use W4 for msvc compilation
2021-11-13 14:13:03 -08:00
daan
9afc253726
add comments, renaming
2021-11-13 14:03:16 -08:00
daan
8bf16746e9
Merge branch 'dev-slice' into dev-slice-cmask
2021-11-13 13:31:00 -08:00
daan
5dc4ec48fe
lower default reset delay
2021-11-12 21:15:11 -08:00
daan
53e2260ca0
merge
2021-11-12 20:14:03 -08:00
daan
d52b559b57
use eager delay after 2 threads
2021-11-12 19:59:59 -08:00
daan
f58b4d923a
comment
2021-11-12 19:58:49 -08:00
daan
9322123a97
start eager commit delay at N>2
2021-11-12 19:32:57 -08:00
daan
6ace2fe4e0
Merge branch 'dev-slice' into dev-slice-cmask
2021-11-12 19:04:35 -08:00
daan
5c08f75d69
merge from dev
2021-11-12 19:04:18 -08:00
daan
f9ac60a90f
suppres eager commit delay for the first 4 threads
2021-11-12 19:03:20 -08:00
daan
9e6ace6bcc
Merge branch 'dev-slice' into dev-slice-cmask
2021-11-12 18:46:38 -08:00
daan
e5a3f3d7c4
merge from dev
2021-11-12 18:46:16 -08:00
daan
d2de66b8fa
do not delay eager commit for the main thread
2021-11-12 18:44:33 -08:00
daan
335d554438
merge from dev-slice
2021-11-12 18:38:14 -08:00
daan
c6b82a4b37
wip: change decommit expiration
2021-11-12 17:31:21 -08:00
daan
b1aff903f5
fix decommit bug
2021-11-11 17:45:41 -08:00
daan
998c2de633
merge from dev-slice
2021-11-10 16:49:43 -08:00
daan
ba6b4bf622
merge from dev
2021-11-10 16:33:42 -08:00
daan
49d64dbc95
save decommit_mask for segments in the segment cache
2021-11-10 16:30:21 -08:00
Daan
f72e5688f5
remove assign in while condition
2021-11-10 11:58:04 -08:00
Daan
fd61997cef
improve aligned support on BSD and MAP_ALIGN systems
2021-11-10 11:26:36 -08:00
Daan
89abbe75d8
improve aligned support on BSD and MAP_ALIGN systems
2021-11-10 11:23:11 -08:00
Daan
8c9ccea2f5
fix huge page madvise in case mmap failed
2021-11-10 10:46:06 -08:00
daan
49c75a3157
wip: increase commit mask resolution
2021-11-09 20:19:31 -08:00
Daan
a4e7ff8608
Merge branch 'dev' into dev-slice
2021-11-06 14:19:26 -07:00
Daan
e96614961f
fix printf format type mismatches (issue #486 )
2021-11-06 14:19:14 -07:00
daan
c17878d1a7
Merge branch 'dev' into dev-slice
2021-11-04 19:10:31 -07:00
daan
f2e3cca213
fix build for missing malloc_good_size
2021-11-04 19:10:15 -07:00
Daan
464cba833e
Merge branch 'dev' into dev-slice
2021-11-04 18:55:34 -07:00
Daan
c47de7eb90
improve macOS overriding
2021-11-04 18:55:12 -07:00
Daan
e853f530a0
add noexcept attributes to improve mi_free codegen
2021-11-04 18:54:57 -07:00
Daan
f3ffa663f1
merge from dev
2021-11-02 22:42:25 -07:00
Daan
32ee13f41e
improve macOS M1 performance; use interpose in combination with zone's; add -fno-builtin-malloc flag in building with MI_OVERRIDE
2021-11-02 21:54:44 -07:00
Daan
5360639748
add mi_malloc_good_size
2021-11-02 21:52:00 -07:00
Daan
74efd6ddac
use load relaxed in mi_free for better code on M1
2021-11-02 21:50:54 -07:00
Daan
dbf8bafc3a
avoid accessing the thread_id after process initialized is set
2021-11-02 21:50:15 -07:00
Daan
d0d47e6489
avoid accessing the thread_id after process initialized is set
2021-11-02 21:49:05 -07:00
Daan Leijen
9c3e6a25f6
Merge branch 'dev' into dev-slice
2021-10-27 19:06:42 -07:00
Daan Leijen
1b1c9186a4
suppress warning on discard attribute on forwards
2021-10-27 19:06:27 -07:00
Daan
db223e4adb
merge from dev
2021-10-27 18:09:16 -07:00
Daan
5fd77aa198
refactor os_overcommit detection
2021-10-27 17:39:11 -07:00
Daan
0335d32766
Merge branch 'dev' of https://github.com/microsoft/mimalloc into dev
2021-10-27 17:25:09 -07:00
Daan
13b30bf2dd
Merge branch 'dev' into overcommit_if_the_system_approves
2021-10-27 17:12:18 -07:00
Daan
6ccf7e87c0
minor edits
2021-10-27 17:08:00 -07:00
Daan
a0c7cf56e6
Merge pull request #477 from devnexen/numa_domains_fbsd
...
NUMA base detection on FreeBSD.
2021-10-27 17:01:52 -07:00
Daan
8cf618a452
Merge pull request #476 from devnexen/malloc_usable_size_fbsd
...
fixes malloc_usable_size signature on FreeBSD.
2021-10-27 12:11:43 -07:00
Daan
7756e1b5fe
fix assertion
2021-10-27 10:45:19 -07:00
Daan
e477633779
fix assertion
2021-10-27 10:41:14 -07:00
Daan
1568dbb9e4
fix mi_is_valid_pointer bit index search (related to issue #478 )
2021-10-27 10:35:16 -07:00
Daan
54b65a556c
fix mi_cfree assertion failure for NULL pointer, issue #478
2021-10-27 10:15:12 -07:00
Daan
6d9e79a498
merge from dev
2021-10-27 10:11:51 -07:00
Daan
ca9785d40e
fix compilation with MI_DEBUG>3, issue #480
2021-10-27 10:06:34 -07:00
David Carlier
00edd9201b
proposal to not overcommit page unconditionally on Linux and FreeBSD,
...
respecting userland settings.
2021-10-24 20:57:58 +01:00
David Carlier
2d2d9af5c6
while at it, doing dragonflybsd too
2021-10-24 11:37:20 +01:00
David Carlier
fc7777ee8c
NUMA base detection on FreeBSD.
2021-10-22 10:11:20 +01:00
David Carlier
898a23ec2b
fixes malloc_usable_size signature on FreeBSD.
2021-10-22 08:12:14 +01:00
Daan
725fe2ac7d
Merge branch 'dev' into dev-slice
2021-10-21 16:17:31 -07:00
Daan
02938b7048
Merge pull request #471 from devnexen/haiku_build_update
...
Haiku build update, since the beta3 few more posix functions are avai…
2021-10-21 15:25:52 -07:00
Daan
2417f6d8a7
Merge pull request #474 from tiran/mi_prefix_os_random
...
Rename _os_random_weak to _mi_os_random_weak
2021-10-21 15:21:19 -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
LongYinan
45321237b5
Fix ARM64 MSVC linker problem
...
Close https://github.com/microsoft/mimalloc/issues/426
2021-10-21 21:15:08 +08:00
David CARLIER
b5b52b8879
Haiku build update, since the beta3 few more posix functions are available e.g. madvise
2021-10-20 18:33:12 +00:00
Daan
de00de96fd
merge with dev
2021-10-20 09:56:03 -07:00
Daan
d482555675
Fix warnings on osx with g++ compilation
2021-10-20 09:55:21 -07:00
Daan
e02f88a11c
Fix warnings with g++-11 compilation
2021-10-20 09:55:03 -07:00
Daan
b47d0802d1
Merge branch 'dev' into dev-slice
2021-10-20 09:36:08 -07:00
Daan
4d89176eb4
add MI_USE_LIBATOMIC to link with -latomic on older systems (see also PR #429 ); rename MI_INTERPOSE to MI_OSX_INTERPOSE
2021-10-20 09:35:58 -07:00
Daan Leijen
d4397ce16c
merge from dev
2021-10-19 15:13:53 -07:00
Daan Leijen
10c31f9b41
fix warnings
2021-10-19 15:13:01 -07:00
daan
505ea78cae
Merge branch 'dev' of https://github.com/microsoft/mimalloc into dev
2021-10-19 15:07:19 -07:00
Daan
3bf7b4313c
add comment
2021-10-19 14:03:48 -07:00
Daan
ae5aae7e10
allow decommit in arena separate from initial commit
2021-10-19 14:00:40 -07:00
Daan
2583ab73dc
remove region.c which belongs in dev only
2021-10-19 13:57:36 -07:00
Daan
35b928b08f
use MADV_DONTNEED instead of mmap fixedfor simplification and possibly better performance on Linux
2021-10-19 13:18:54 -07:00
Daan
bb00a5a32e
remove MADV_FREE_REUSABLE from mi_os_reset as it needs MADV_FREE_REUSE to reuse the memory again.
2021-10-19 13:11:11 -07:00
Daan
aeb73b0cd4
merge from dev
2021-10-19 12:55:10 -07:00
Daan
9a724889ea
refine stat output with new SI units
2021-10-19 12:50:16 -07: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
2adf69859b
Merge pull request #418 from devnexen/haiku_build_fix
...
haiku biuld fix proposal, warning suppression.
2021-10-19 12:19:44 -07:00
Daan
6068a8bb1b
Merge pull request #420 from hankluo6/typo
...
Fix typo
2021-10-19 12:17:44 -07:00
Daan
adeef8d403
formatting
2021-10-19 10:31:49 -07:00
Daan
4b52ce4095
Merge pull request #450 from bmalrat/FixStatOnWindowsRealloc
...
Fixed stats in mi_os_mem_alloc_aligned on windows when re-allocate
2021-10-19 10:29:16 -07:00
Daan
20a3eee6f0
Merge pull request #449 from bmalrat/FixTypo
...
Fixed typo in header
2021-10-19 10:24:54 -07:00
Daan
f945dbb390
add space after _Atomic to prevent errors on msvc without /TP (see PR #452 )
2021-10-19 10:18:44 -07:00
Daan
a4078df9d5
Merge branch 'dev' into dev-slice
2021-10-19 10:17:53 -07:00
Daan
f0f9aecfe4
add comment on #if ending
2021-10-19 09:52:20 -07:00
Daan
4841bc1721
Merge pull request #465 from thomcc/no-getenv
...
Add an option to disable environment access inside options.c
2021-10-19 09:49:34 -07:00
Daan
ea46430016
Merge pull request #468 from tiran/default_source
...
Define _DEFAULT_SOURCE for syscall and realpath
2021-10-19 09:40:21 -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
Daan
d49b3a95a2
Merge pull request #464 from JJL772/master
...
Fix `_mi_error_message` printf formatting error
2021-10-19 09:28:20 -07:00
Christian Heimes
afbcf20f24
Define _DEFAULT_SOURCE for syscall and realpath
...
Define ``_DEFAULT_SOURCE`` in ``random.c`` and ``alloc.c``. The macro
is required for ``syscall()`` and ``realpath()``. Other files like
``os.c`` already define the macro.
Signed-off-by: Christian Heimes <christian@python.org>
2021-10-19 15:07:54 +02: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
22c2fd82cc
ensure managed os memory is at least one arena block in size
2021-10-18 20:44:19 -07:00
Daan Leijen
bcce4d52bf
fix bug in determination of block size in pre-reserved arena memory
2021-10-18 20:39:39 -07:00
Daan
d6bbc08119
prefer monotonic clock for stats (issue #457 )
2021-10-18 18:24:59 -07:00
Daan Leijen
6ef15943cc
fix comments
2021-10-18 16:59:19 -07:00
Daan Leijen
8d2a21eb78
Merge branch 'dev' into dev-slice
2021-10-18 16:46:18 -07:00
Daan Leijen
bd8e3fd8e1
increase robustness of primitive windows allocation by always using a fallback to VirtualAlloc
2021-10-18 16:46:06 -07:00
Daan Leijen
54659aec9e
merge from dev
2021-10-18 16:28:08 -07:00
Daan Leijen
0fb61c9eaa
do not call exit if try handler fails but use abort instead
2021-10-18 16:25:10 -07:00
Thom Chiovoloni
3c058f07a9
Add an option to disable automatic use of getenv
inside options.c
2021-10-08 23:59:35 -07:00
Jeremy Lorelli
c21b6df51e
Fix missing parameter in mi_free error message
2021-10-05 08:41:03 -07:00
Daan Leijen
e6b58052da
add start offset to pages to reduce cache/page effects
2021-10-02 11:13:00 -07:00
Daan Leijen
262022c1d1
fix segment map for 32-bit systems (including wasm)
2021-10-01 15:10:11 -07:00
Daan Leijen
d7ac4478a8
Merge branch 'dev' into dev-slice
2021-10-01 15:05:41 -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
ee0b01c84d
Fixed stats in mi_os_mem_alloc_aligned on windows when re-allocate
...
In the last try the previous mi_os_mem_free decrease stat and mi_win_virtual_alloc doesn't increase it
2021-08-04 17:46:58 -04:00
bmalrat
30be78d97a
Fixed typo in headers
2021-08-04 17:31:48 -04:00
Jim Huang
c4947c8879
Use secure random generator on macOS
...
The implementation of arc4random_buf differs from its documentation. It
is documented as "always successful, and no return value is reserved to
indicate an error" for the sake of FreeBSD compatibility [1]. However,
the actual implementation on macOS invokes function "ccrng_generate" [2]
without validating the error cases. It might fail silently[3], which leads
to unexpected source of entropy.
The original arc4random used the RC4 a.k.a. ARC4 algorithm, and ChaCha20
based implementation was introduced in FreeBSD 12.0. Since macOS 10.12,
it was replaced with the NIST-approved AES cipher, and it may be replaced
again in the future as cryptographic techniques advance. Therefore, we
should not assume that arc4random never fails.
On the contrary, CCRandomGenerateBytes(), part of Cryptographic Services [4],
returns cryptographically strong random bits with explicit status code.
This patch properly calls CCRandomGenerateBytes() and checks the status.
[1] https://www.freebsd.org/cgi/man.cgi?query=arc4random_buf
[2] https://opensource.apple.com/source/CommonCrypto/CommonCrypto-60178.40.2/lib/CommonRandom.c.auto.html
[3] https://opensource.apple.com/source/Libc/Libc-1439.40.11/gen/FreeBSD/arc4random.c.auto.html
[4] https://developer.apple.com/documentation/security
2021-06-25 12:37:00 +08:00
hank
1c1571742d
fix typo
2021-06-21 22:36:47 +08:00
David Carlier
a35a7d4f19
haiku biuld fix proposal, warning suppression.
2021-06-19 09:14:43 +00:00
Daan Leijen
b3b0fb5832
merge from dev
2021-06-17 20:05:40 -07:00
Daan Leijen
728be93977
fix for #414 making numa node count atomic
2021-06-17 19:38:51 -07:00
Daan Leijen
5869c85749
merge from dev
2021-06-17 19:18:57 -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
e592360d4d
revert relative includes
2021-06-07 17:53:03 -07:00
Daan Leijen
6ba9387bf8
Merge branch 'dev' into dev-slice
2021-06-07 17:51:42 -07:00
Daan Leijen
c8b5b74500
improve warnings
2021-06-07 17:51:27 -07:00
Daan Leijen
d7eb0bab75
Merge branch 'dev' into dev-slice
2021-06-07 17:01:00 -07:00
Daan Leijen
bb957fcd81
Merge branch 'dev' of https://github.com/microsoft/mimalloc into dev
2021-06-07 17:00:35 -07:00
Daan
cd633b2e2a
Merge pull request #411 from jserv/predict-alloc_size
...
Add branch hint for _mi_os_good_alloc_size
2021-06-07 16:55:39 -07:00
Daan Leijen
9974b0ee23
Merge branch 'dev' into dev-slice
2021-06-07 16:51:14 -07:00
Daan Leijen
4ba32c3160
Revert "make all includes relative"
...
This reverts commit 1feb6123d9
.
2021-06-07 16:47:57 -07:00
Daan Leijen
069b3276df
merge from dev
2021-06-06 20:33:55 -07:00
Daan Leijen
7b595bd957
Merge branch 'dev' into dev-slice
2021-06-06 20:31:53 -07:00
Daan Leijen
1feb6123d9
make all includes relative
2021-06-06 20:31:36 -07:00
Jim Huang
d48c93af2c
Add branch hint for _mi_os_good_alloc_size
...
In _mi_os_good_alloc_size, overflow caused by alignment size is rare,
and this patch added the appropriate branch hint during range checks.
2021-05-31 12:01:35 +08: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
Daan Leijen
10ce8839fa
merge from dev
2021-04-28 13:23:46 -07:00
Daan
16b3329bd4
Merge pull request #396 from jserv/fix-copyright-date
...
Bump copyright date
2021-04-28 13:11:11 -07:00
Daan Leijen
29ea7a89ab
add braces
2021-04-28 13:08:59 -07:00
Daan
6d1658123c
Merge pull request #391 from jserv/improve-align-down
...
Rewrite align_down with bitwise operations
2021-04-28 13:07:13 -07:00
Daan Leijen
aca46242ab
update comment for aligned_alloc
2021-04-28 12:47:14 -07:00
Daan
45a8dc7f55
Merge pull request #385 from elbaro/fix/aligned-alloc
...
Fix aligned_alloc
2021-04-28 12:43:32 -07: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
Jim Huang
52943917ad
Rewrite align_down with bitwise operations
...
mi_align_down_ptr was implemented with multiplication and division,
which can be converted to equivalent and deterministic bit operations.
2021-04-21 13:14:53 +00: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