Commit graph

1236 commits

Author SHA1 Message Date
Jim Huang
1966db91b7 Implement appropriate atomic_yield for Armv7+
Spin-wait often involves active sleep (better known as "pause"). x86
has a direct assembly instruction named "PAUSE" which has two roles:
one is to hint at the operating systme that it might be ready to be
swapped out, and the other is to create a small delay. That delay is
useful as backoff from attempting to capture spinlocks, which improves
the behavior of the system and allows more efficient lock acquisition.

However, the "yield" instruction is not a good fit because it is
effectively a nop on most Arm cores and does not cause enough delay to
help backoff. The "isb" instruction is a barrier that, especially
inside a loop, creates a small delay without consuming ALU resources.
2021-04-23 22:42:58 +00:00
Daan
766f1f9345
Merge pull request #388 from nico-abram/patch-2
Fix typo in comment
2021-04-22 10:34:13 -07:00
Daan
f941015928
Merge pull request #384 from kdrag0n/fix-android-thread-id
Fix thread ID getter on Android ARM/AArch64
2021-04-22 10:33:53 -07:00
Daan
00ddc1b8a0
Merge pull request #389 from jserv/macos-predefined-macro
Revise the use of macOS predefined macro
2021-04-22 10:25:27 -07: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
unknown
8311cef0d1 Fix typo in comment
it -> if in mimalloc-types.h
2021-04-17 15:08:25 -03: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
b19da8e362
update readme for 1.7.1 and 2.0.1 2021-04-06 11:05:43 -07:00
Daan Leijen
985f313b35 bump version to 1.7.1 2021-04-06 10:56:26 -07:00
Daan Leijen
5f596056c9 use 2-6TiB area for hints to accommodate pre-windows8 better 2021-02-24 15:49:43 -08:00
Daan Leijen
e64474e06b add virtiual gaps between hinted allocations in secure mode 2021-02-24 15:30:39 -08:00
Daan Leijen
9317256a4f improved ASLR (issue #372) 2021-02-24 15:14:17 -08:00
Daan Leijen
3228bb685f set errno ENOMEM for limited arena allocation (issue #295) 2021-02-22 14:17:25 -08:00
Daan Leijen
9f3c29c642 remove -march=native flag; see pr #362 for discussion 2021-02-22 13:09:41 -08:00
Daan Leijen
71ac98ab08 rename <Windows.h> include to <windows.h> for mingw compatibility (see pr #367) 2021-02-22 13:04:11 -08:00
Daan Leijen
7962420697 fix bug in bitmap is_claimed_across; issue #368 2021-02-22 12:37:08 -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
a7c33a3b0e fix getting the unique thread id on the Apple M1, see issue #354. 2021-02-01 15:47:22 -08:00
Daan Leijen
c426ab4ea2 add condition to avoid compilation error on vs2015 (#issue 353) 2021-02-01 15:41:41 -08:00
Daan Leijen
0091a641a7 undo previous commit dcae918 due to wrong logic (issue #289) 2021-02-01 09:55:18 -08:00
Daan Leijen
dcae918b84 always do ASLR in secure mode even in debug mode (issue #289) 2021-02-01 09:49:12 -08:00
Daan
15220c6843
Update readme for v2.0 2021-01-31 14:11:35 -08:00
Daan Leijen
92ead2d880 bump version to 1.7.0 2021-01-31 13:51:19 -08:00
Daan
599d6327ba
Update readme.md 2021-01-31 12:03:16 -08:00
Daan
89b7955afe
Update readme.md 2021-01-31 11:58:46 -08:00
Daan
706654f41b
Update readme.md 2021-01-31 11:58:22 -08:00
Daan
7f052290da
Update readme.md 2021-01-31 11:57:51 -08:00
Daan
620638cfaf
Update readme.md 2021-01-31 11:49:44 -08:00
Daan
2f04bec5d9
Update readme.md 2021-01-31 11:44:34 -08:00
Daan
9f31b49527
Update readme.md 2021-01-31 11:43:50 -08:00
Daan
9bacaa25c8
Update readme.md 2021-01-31 11:42:16 -08:00
Daan
08bd9d80d7
Update readme.md 2021-01-31 11:36:36 -08:00
Daan
6ccf695dcb
Update readme.md 2021-01-31 11:34:13 -08:00
Daan
bb92ee8520
Update readme.md 2021-01-31 11:32:54 -08:00
Daan Leijen
512cdd5aeb Merge branch 'dev' of https://github.com/microsoft/mimalloc into dev 2021-01-31 11:29:32 -08:00
Daan Leijen
a1fb2a4957 add rss figures 2021-01-31 11:28:39 -08:00
Daan
a6bc463652
Update benchmark figures 2021-01-31 11:20:56 -08:00
Daan Leijen
558c8d085e update benchmark references 2021-01-31 10:23:57 -08:00
Daan Leijen
58678ac4eb move bench figures in separate folder 2021-01-31 10:21:17 -08:00
Daan Leijen
645659bb1f add new benchmark results 2021-01-31 10:16:18 -08:00
Daan Leijen
a87a808a8b Merge branch 'master' into dev 2021-01-30 17:14:31 -08:00
Daan
d98ffca987
fix indentation 2021-01-30 17:14:11 -08:00
Daan
b61996184e
Use explicit trigger syntax 2021-01-30 17:11:02 -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
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
5291487dac fix cmake typo in merge for #255 2021-01-29 15:52:18 -08:00
Daan
976becd002
Merge pull request #255 from xhochy/patch-1
Add option to install directly in CMAKE_INSTALL_PREFIX
2021-01-29 15:50:21 -08:00
Daan
71d80e914d
Merge branch 'dev' into patch-1 2021-01-29 15:49:57 -08:00