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
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
1b22da3c28
Merge branch 'dev' into dev-slice
2021-02-02 10:46:43 -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
ba84aa2783
Merge branch 'dev' into dev-slice
2021-02-01 15:47:37 -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
Daan Leijen
36b7a3cb03
merge from dev
2021-01-30 16:37:38 -08:00
Daan Leijen
35c1fc2be9
limit memcpy as rep stosb to windows where the cpu supporst FSRM; add mi_memcpy_aligned for machine-word aligned copy. see issue #201 and pr #253
2021-01-30 14:33:46 -08:00
Daan Leijen
b93cba3b05
merge from dev
2021-01-29 16:53:52 -08:00
Daan Leijen
92ec493a5d
possible fix for aligment warning (issue #341 )
2021-01-29 16:21:50 -08:00
Daan Leijen
0a06884732
ensure memcpy with rep stosb is only used on windows
2021-01-29 16:09:09 -08:00
Daan
9b966c3492
Merge pull request #253 from haneefmubarak/memcpy-rep-movsb-windows-201
...
resolve #201 with a platform-selective REP MOVSB implementation
2021-01-29 16:00:00 -08:00
Daan Leijen
1e9a5c2d78
Merge branch 'dev' into dev-slice
2021-01-28 17:37:13 -08:00
Daan Leijen
78ce716e2d
add comment on use of tpidrro_el0 on macOS
2021-01-28 17:36:56 -08:00
Uwe L. Korn
a753084f74
Use APPLE instead of MACH
2021-01-28 11:38:38 +01:00
Uwe L. Korn
88330cfc9f
Use __APPLE__ instead of __MACH__
2021-01-22 17:06:43 +01:00
Uwe L. Korn
ab3dac04c2
Use tpidrro_el0 for thread local storage in macOS-arm64
...
Fixes #343
2020-12-30 21:49:41 +01:00
Daan Leijen
3c70317393
merge from dev
2020-12-15 16:07:23 -08:00
Daan Leijen
bb386025b5
update override on macOS with interpose of malloc_default_zone (issues #313 )
2020-12-15 16:03:54 -08:00
Daan Leijen
b803095b83
merge from dev
2020-12-10 13:17:56 -08:00
Daan
5bbe1c0216
Merge pull request #323 from devnexen/dfbsd_build_fix
...
DragonFly support fix (for 5.8.x and forward).
2020-12-10 10:19:05 -08:00
Daan
8b8011b4f0
Merge pull request #322 from Kokokokoka/x32_patch
...
fix for x32 builds
2020-12-10 10:14:04 -08:00
David Carlier
e6c2fd44fc
DragonFly support fix (for 5.8.x and forward).
...
The pthread slot approach is somewhat buggy (pretty visible
with the stress unit test which segfault more or less randomly,
but the stats never show up).
Using the default approach instead, the test passes eventough
it s relatively slow (e.g 1.5 sec on FreeBSD vs 4.5 on DragonFly with same
machine).
2020-10-22 11:15:37 +01:00
Vasya B
cb45e3c6b1
fix for x32 builds
2020-10-19 21:00:16 +00:00
daan
fa01875eb2
merge from dev (with is_pinned/is_large separation)
2020-09-08 17:54:58 -07:00
daan
14b8d27386
track pinned memory separately from large os pages
2020-09-08 16:46:03 -07:00
daan
037285ac09
refactor segment cache and map in a separate source file
2020-09-08 13:27:34 -07:00
daan
a948724340
merge from dev (bitmap split)
2020-09-08 10:33:30 -07:00
daan
c86459afef
split bitmap code into separate header and source file
2020-09-08 10:14:13 -07:00
daan
30b993ecf3
consolidate bit scan operations
2020-09-08 09:27:57 -07:00
daan
953bbde089
fix is_in_same_page check
2020-09-06 15:09:51 -07:00
daan
f7dc4847f2
keep commit_mask live in the cache for better reuse
2020-09-05 21:58:32 -07:00
daan
63a9f45ba6
add initial mi_commit_mask abstraction
2020-09-05 19:39:10 -07:00
daan
03071dec0f
merge from dev-atomic with new atomic interface
2020-09-03 12:13:09 -07:00
daan
900c97664a
merge from dev-atomic
2020-09-03 09:47:01 -07:00
daan
2cffc3b851
merge from dev
2020-08-27 22:43:57 -07:00
daan
5805c39916
enable --std=c99 compilation; fix mingw compilation
2020-08-09 17:55:17 -07:00
daan
ef8e5d18a6
replace atomics with C11/C++ atomics with explicit memory order; passes tsan. Issue #130
2020-07-26 18:01:33 -07:00
daan
afe29cb8f5
fix ub on shift, issue #279
2020-07-25 19:33:02 -07:00
daan
c5406f327e
move include 'limits.h' outside of definition
2020-07-21 18:51:25 -07:00
David Carlier
0c550d1626
illumos support/build fix and large page support
2020-07-10 03:26:14 +01:00
Haneef Mubarak
4c45793ec1
fix __movsb typecast error MSVC
2020-05-26 16:16:19 -07:00
Haneef Mubarak
6c92690914
fix REP MOVSB doc comment typo
2020-05-26 16:08:33 -07:00
Haneef Mubarak
429025634e
resolve #201 with a platform-selective REP MOVSB implementation
2020-05-26 16:04:28 -07:00
daan
cb05ef9f2c
merge from dev
2020-05-19 10:43:46 -07:00
daan
a7d2bc8ad6
edit warning messages to be more consistent
2020-05-19 10:16:28 -07:00
daan
dcb3574cf0
fix assertions for huge segment free
2020-05-01 21:14:41 -07:00
daan
1f396e64a0
merge from dev
2020-03-16 16:41:21 -07:00
daan
f2ac272baa
strengthen alignment check for memalign and aligned_alloc
2020-02-17 09:59:11 -08:00
daan
a96e94f940
change TLS slot on OpenBSD
2020-02-02 22:46:38 -08:00