Commit Graph

709 Commits

Author SHA1 Message Date
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
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
bd56782f26 bump version to 2.0.0 2021-01-31 14:02:06 -08:00
Daan Leijen
8bcc60edd9 Merge branch 'dev' into dev-slice 2021-01-31 13:57:35 -08:00
Daan Leijen
92ead2d880 bump version to 1.7.0 2021-01-31 13:51:19 -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
72559c5c49 merge from dev 2021-01-29 13:08:00 -08:00
Daan
b759bcf5c7
Merge pull request #329 from asl/mi_stat_agg
Unify statistics collection
2021-01-29 12:52:29 -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
Daan Leijen
8d4444ef00 remove spurious parenthesis (#350) 2021-01-28 17:36:35 -08:00
Daan Leijen
e314699ee0 add debug view of arenas 2021-01-28 17:32:42 -08:00
Daan
d9ae916a74
Merge pull request #350 from mr-c/patch-1
add/improve atomic yields for SSE2, ARM*, PowerPC
2021-01-28 17:29:54 -08:00
Uwe L. Korn
a753084f74 Use APPLE instead of MACH 2021-01-28 11:38:38 +01:00
Michael R. Crusoe
fb66ebea1d
add/improve atomic yields for SSE2, ARM*, PowerPC 2021-01-23 16:45:47 +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
da79629308 Merge branch 'dev' into dev-slice 2020-12-17 14:11:50 -08:00
Daan
03503ea4e5
Merge pull request #339 from devnexen/spin_impl_upd
Restricts cpu yield instructions a little.
2020-12-17 14:06:23 -08:00
Daan
33614cc054
Merge pull request #342 from wsmoses/fix2
Fix strndup override
2020-12-17 14:06:01 -08: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
William S. Moses
30fc86cca9 Fix strndup override 2020-12-13 01:50:31 -05:00
David Carlier
33a10b4860 Restricts cpu yield instructions a little.
adding clobber for ARM and preventing older 32 bits chips not supporting this instruction.
2020-12-12 12:19:04 +00:00
Daan Leijen
b803095b83 merge from dev 2020-12-10 13:17:56 -08:00
Daan
9d0555c65b
Merge pull request #326 from asl/mi_stat_counter
Honour MI_STAT in couple more places
2020-12-10 11:53:30 -08:00
Daan
56a1c852ea
Merge pull request #325 from asl/max-error-counter
Do not use the same counter for warnings and errors
2020-12-10 10:23:08 -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
Anton Korobeynikov
765fc9c0ca Unify statistic collection:
- For MI_STAT == 0 no allocation stats are collected
  - For MI_STAT == 1 only aggregated values (across normal, large and huge heaps) are collected
  - For MI_STAT == 1 separate per-bin collection for normal heap is done as well
2020-11-11 11:41:39 +03:00
Anton Korobeynikov
00fb89f771 Rename the field 2020-11-11 11:41:33 +03:00
Anton Korobeynikov
39bcf8a6b0 Honour MI_STAT in couple more places. 2020-11-02 00:14:02 +03:00
Anton Korobeynikov
9c45221243 Do not use the same counter for warnings and errors.
Warnings happen normally and could be safely ignored in the most cases,
however errors, if enabled, should not be ignored. Currently since warnings
and errors share the same counter we effectively stop showing errors after
16 warnings (which happen all the time).

Use different counters for errors and warnings.
2020-11-01 23:57:42 +03: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
e1c38eef76 use allow_decommit option for both the segment cache and pages 2020-09-24 17:20:39 -07:00
daan
13a4030619 bump version to 1.6.7 2020-09-24 16:30:40 -07:00
daan
b59abce8ea Merge branch 'dev' into dev-slice 2020-09-24 10:16:54 -07:00
daan
9d5098c705 bump version to 1.6.7 for further development 2020-09-24 10:16:40 -07:00
daan
6adb919085 bump version to 1.6.6 2020-09-24 10:14:10 -07:00
daan
f88b4b4c27 extend mi_process_info to include elapsed time 2020-09-24 10:13:25 -07:00
daan
680c9266bf Merge branch 'dev' into dev-slice 2020-09-24 09:29:43 -07:00
daan
d0d3634143 bump version for further development 2020-09-24 09:29:37 -07:00
daan
165b64f553 Merge branch 'dev-exp' into dev-slice 2020-09-24 09:11:58 -07:00
daan
c05302f097 Merge branch 'dev' into dev-exp 2020-09-24 09:11:49 -07:00
daan
64a3d24dcd bump version to 1.6.5 2020-09-23 20:00:23 -07:00
daan
fa01875eb2 merge from dev (with is_pinned/is_large separation) 2020-09-08 17:54:58 -07:00
daan
8607ff617c add environment option mi_reserve_os_memory 2020-09-08 17:16:31 -07:00
daan
364674185e add option to limit OS allocation and only allow allocation from arenas 2020-09-08 16:56:51 -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
371532ff02 merge from dev 2020-09-07 21:43:05 -07:00
daan
c7272afa9a add mi_reserve_os_memory/mi_manage_os_memory; allow arena allocations to cross multiple bitmap fields 2020-09-07 21:34:34 -07:00
daan
953bbde089 fix is_in_same_page check 2020-09-06 15:09:51 -07:00
daan
b7046934e5 Merge branch 'dev' into dev-slice 2020-09-06 13:53:30 -07:00
daan
46ee8952eb update mi_process_info to not use doubles 2020-09-06 13:53:02 -07:00
daan
45300ac43d merge from dev 2020-09-06 13:24:47 -07:00
daan
8c838a949f Merge branch 'dev' into dev-slice 2020-09-06 13:22:44 -07:00
daan
ee286919d9 add mi_process_info api call 2020-09-06 13:21:19 -07:00
daan
4355ab7d20 add i64 atomics 2020-09-06 13:21:02 -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
83bd352f37 roll back previous commit (use standard C++ atomics on msvc 2020-09-05 11:29:38 -07:00
daan
102a85937e experiment with using non-c++ atomics on msvc 2020-09-05 11:27:06 -07:00
daan
4df01218e2 fix msvc compilation with new atomics 2020-09-05 10:03:37 -07:00
daan
644e453709 Merge branch 'dev' into dev-slice 2020-09-05 09:37:38 -07:00
daan
2e311f341b fix msvc compilation in C mode 2020-09-05 09:37:09 -07:00
daan
7c2b79bef0 Merge branch 'dev' into dev-slice 2020-09-05 09:17:59 -07:00
daan
50de0d2358 fix C++ compilation with new atomics 2020-09-05 09:17:42 -07:00
daan
97f56b1e08 merge from dev 2020-09-04 14:21:33 -07:00
daan
f107acb3c8 fix __cplusplus test (pr #287) 2020-09-04 10:40:05 -07:00
daan
f6109765d8 update whitespace and comments 2020-09-03 15:04:40 -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
76a68cd7af bump version to 1.6.6 with new atomics 2020-09-03 09:45:53 -07:00
daan
b4825372ab small compilation warning fixes (extra semicolon etc) 2020-08-29 19:30:38 -07:00
daan
8033b62979 allow overriding MI_MAX_ALIGN_SIZE 2020-08-29 09:59:15 -07:00
daan
e4ddc75069 set delayed decommit mask more precisely to only decommit currently committed blocks 2020-08-28 08:46:51 -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
ac0c121c68 update documentation for 1.6.4 release 2020-07-27 08:55:26 -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
a468430772 strengthen memory order of bit operations; insert memory fences 2020-07-26 14:19:30 -07:00
daan
a9f46dc86f reduce memory order constraints for better efficiency on ARM etc 2020-07-26 11:58:02 -07:00
daan
ebf951e851 extra checks for atomic ptr exchange; extend mi_atomic_yield for win32 2020-07-26 00:15:57 -07:00
daan
95afd0509f make segment abandoned_next atomic; tsan passes without warnings now (issue #130) 2020-07-25 23:50:22 -07:00
daan
09ade02429 bring inline with C11 atomics; no volatile and cas order of expected/desired 2020-07-25 22:52:27 -07:00
daan
e27422adca switch to using C++ atomics in MSVC as well 2020-07-25 20:55:45 -07:00
daan
afe29cb8f5 fix ub on shift, issue #279 2020-07-25 19:33:02 -07:00
daan
a9a21f39d8 fix memory order for CAS failure, issue #130 2020-07-23 15:52:02 -07:00
daan
b74caddcc1 fix memory order to acq_rel for atomic and/or, issue #130, thanks @mpoeter! 2020-07-23 15:00:49 -07:00
daan
8aa18d3661 fix TSAN warning for statistics maximum, issue #130 2020-07-22 14:16:18 -07:00
daan
444afa934f fix memory order for weak CAS, issue #130, thanks @mary3000! 2020-07-22 13:58:00 -07:00
daan
2e1b4f512d make max update in the stats atomic 2020-07-22 13:45:04 -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
53aa46890a merge from dev 2020-05-05 10:54:59 -07:00
daan
cefc930f72 bump version to 1.6.4 for further development 2020-05-05 10:47:46 -07:00
daan
e5b72cdfe7 reduce segment size and increase cache 2020-05-02 22:22:35 -07:00
daan
69158f2c76 roll back again to new arena cache: previous perf regression was caused due to accidentally making secure mode default 2020-05-02 12:04:36 -07:00
daan
b8846f7a27 fix unprotect of guard pages 2020-05-02 10:51:10 -07:00
daan
dcb3574cf0 fix assertions for huge segment free 2020-05-01 21:14:41 -07:00
daan
5cfdc39ff1 remove on-demand page commit option 2020-04-30 18:23:33 -07:00
daan
dad3be3c64 update comments 2020-04-30 17:21:36 -07:00
daan
0d25493c39 segment size to 16MiB to improve perf on mstress and rptest 2020-04-28 16:50:03 -07:00
daan
1b0de9b4cf merge from dev 2020-04-28 16:22:38 -07:00
Anton Korobeynikov
079b886feb Add cmake option to specify whether warnings / errors are enabled by default.
Currently warnings / errors are enabled by default in debug build.
Otherwise they could be enabled only via environmental variable or
API option call. Add possibility to specify the default during the
build time. This simplifies e.g. integration of the library into
bigger projects as no source changes would be required.
2020-04-28 16:44:44 +03:00
daan
3484cda169 bump version to 1.6.3 for further development 2020-04-20 18:01:39 -07:00
daan
d102882bdf bump version to 1.6.2 2020-04-20 17:59:13 -07:00
daan
69a0846478 add MI_PADDING flag to cmake to supress use of padding in debug mode 2020-04-07 10:01:18 -07:00
daan
0a3e5bb699 further fixes to compile on mingw without warnings (issue #217) 2020-04-06 10:56:53 -07:00
daan
50bfacdb71 fix mingw compilation by using export definitions (issue #217) 2020-04-06 09:53:29 -07:00
daan
cfeee53389 remove accidental include file 2020-03-16 16:44:29 -07:00
daan
1f396e64a0 merge from dev 2020-03-16 16:41:21 -07:00
daan
7745dde8d2 allow retirement for all object sizes (issue #212) 2020-03-16 15:31:37 -07:00
daan
82684042be bump version to 1.6.1 2020-02-17 10:10:22 -08:00
daan
f2ac272baa strengthen alignment check for memalign and aligned_alloc 2020-02-17 09:59:11 -08:00
daan
67de2549cf fix build with clang-cl due to _Check_return_ (issue #200) 2020-02-14 09:40:56 -08:00
daan
8a2a52843d delete all thread owned heaps when a thread is terminated (issue #202) 2020-02-13 12:15:23 -08:00
daan
f42b8526d0 fix wrong __declspec(restrict) and __attribute__((malloc)) attributes on reallocation functions 2020-02-13 10:36:39 -08:00
daan
04f1c3b1e2 bump version to v1.6.0 2020-02-09 18:53:39 -08:00
daan
a96e94f940 change TLS slot on OpenBSD 2020-02-02 22:46:38 -08:00
daan
3560e0a867 fix TLS slot number on OSX 2020-02-02 22:15:09 -08:00
daan
1c2e0a47ca fix noexcept attribute on array delete operators 2020-02-02 22:04:53 -08:00
daan
f3c47c7c91 improved malloc zone handling on macOSX (not working yet) 2020-02-02 21:03:09 -08:00
daan
757dcc8411 extend interpose for macOSX 2020-02-02 19:07:26 -08:00
daan
12c4108abe update comments 2020-02-02 16:09:09 -08:00
daan
07fbe4f80f fixes for dragonfly 2020-02-02 14:31:28 -08:00
daan
8bc20631e4 fixes for freeBSD 2020-02-02 13:25:26 -08:00
daan
d2db9f1fc2 update thread local storage 2020-02-02 13:12:22 -08:00
daan
bb64634e4e Merge branch 'dev-exp' into dev-exp-tls 2020-02-01 17:48:57 -08:00
daan
bf2eb55ed1 reformatting 2020-02-01 17:48:26 -08:00
daan
8aba40a972 use default declaration for the STL allocator class 2020-02-01 17:41:04 -08:00
daan
3f17ac287c add 'nodiscard' attribute to mimalloc interface 2020-02-01 17:29:30 -08:00
daan
0989562c2d add initial fast tls for macOSX 2020-02-01 16:57:00 -08:00
daan
fea903900d use __thread locals on linux 2020-02-01 14:33:34 -08:00
daan
a169cf0e3f merge dev-exp; add pthread TLS support for macOSX 2020-02-01 14:10:10 -08:00
daan
edff9d4fbb merge from dev-win (padding) 2020-02-01 12:32:59 -08:00
daan
aa68b8cbc7 improve encoding of padding canary and buffer overflow detection 2020-02-01 12:16:37 -08:00
daan
40f1e1e07b byte-precise heap block overflow checking with encoded padding 2020-01-31 23:39:51 -08:00
daan
68112a2751 better padding implementation, more precise statistics 2020-01-31 20:34:24 -08:00
daan
4531367de2 fix padding check for aligned allocation; improve perf for small aligned allocations 2020-01-31 13:20:02 -08:00
daan
f820fae858 merge from dev; add retired collect on abandon 2020-01-30 07:24:35 -08:00
daan
a7c69ccbea fix stat accounting of segments with huge blocks 2020-01-30 06:25:42 -08:00
daan
ed1c8a203a improve performance with tls recursion counter 2020-01-29 23:08:52 -08:00
daan
03b363a1c2 first working tls on macOS using interpose; still slow 2020-01-29 22:46:44 -08:00
daan
5d212d688f add MI_PADDING build option to add padding to each block to detect heap block overflows 2020-01-29 17:10:57 -08:00
daan
b50bec463d merge from dev-exp; better abandoned reclamation 2020-01-27 22:12:23 -08:00
daan
e628fc7067 cleanup reclaim logic 2020-01-26 12:39:11 -08:00
daan
5e32d00aab add visit count to abandoned to limit list length 2020-01-25 12:26:08 -08:00
daan
b31bc52618 add cache alignment directives for contended variables 2020-01-24 19:02:13 -08:00
daan
4a2a0c2d50 initial abandon based on fine-grained reclamation 2020-01-23 19:50:35 -08:00
daan
c9106e74a8 remove __thread attribute from mimalloc.h 2020-01-23 11:06:25 -08:00
daan
6fb434a99b use -fvisibility=hidden on clang as well 2020-01-23 10:31:47 -08:00
daan
a46d20a681 merge with new atomic macros 2020-01-22 20:53:44 -08:00
daan
e226ebcc97 Merge branch 'dev' into dev-arena 2020-01-22 20:39:33 -08:00
daan
e3b16fe4ef reduce type casts in atomic operations 2020-01-22 19:44:54 -08:00
daan
0f14f431c5 bump version to 1.5 for further development 2020-01-22 18:33:07 -08:00
Daan Leijen
caa5e51a67 align size of page_t, increase slices per segment 2020-01-22 11:29:32 -08:00
daan
0028272cf4 small fixes, reduced segment size, fix merge conflicts 2020-01-20 22:33:29 -08:00
daan
394a7a92ab merge from dev 2020-01-20 19:06:08 -08:00
daan
3957b2fd28 add mi_new_realloc(n) to support C++ style reallocation that raises std::bad_alloc on out-of-memory 2020-01-20 15:41:56 -08:00
daan
146899af8a add missing members to stl allocator (#193) 2020-01-20 15:27:05 -08:00
daan
a33ebb8625 add alloc_align attribute to aligned allocation functions 2020-01-19 22:14:35 -08:00
daan
514b315283 add max_size member to STL allocator 2020-01-19 21:27:46 -08:00
daan
9d7ac76d93 fix compilation under Intel C compiler (icc) 2020-01-19 18:35:45 -08:00
daan
dc58388968 Add ability to register custom error function called on various error conditions; including ENOMEM 2020-01-17 19:59:55 -08:00
daan
3e982a3813 fix STL deallocate passing count (instead of size) to mi_free_size 2020-01-17 15:58:43 -08:00
daan
6dd636d82d improve STL allocator using mi_new_n and removing unused parameter names; follow up from pr #193 and #188 2020-01-17 15:41:52 -08:00
daan
6b7356a10a make mimalloc compile with the highest warning level on msvc 2020-01-16 18:12:01 -08:00
daan
a0bee081dd use proper C++11 check for noexcept attribute 2020-01-16 15:58:48 -08:00
daan
7a9502973d rearrange STL allocator code: remove pragma, ifdef for C++11 2020-01-16 15:57:11 -08:00
Daan
97bd204c42
Merge branch 'dev' into kile/stl 2020-01-16 15:33:13 -08:00
Kirsten Lee
526bee6843 merge stl and main header 2020-01-16 15:17:15 -08:00
Kirsten Lee
1b2b7404f7 flip the order of includes for ease of use 2020-01-16 14:54:13 -08:00
daan
24f8bcbc8f add explicit calling convention to registered functions 2020-01-16 14:25:09 -08:00
daan
8d8f355ed0 add option to reset eagerly when a segment is abandoned 2020-01-16 11:25:02 -08:00
daan
7a1e86fc20 merge from dev 2020-01-15 18:03:37 -08:00
daan
0099707af9 use delayed free for all pages; reduce size of the page structure for improved address calculation 2020-01-15 17:19:01 -08:00
daan
202246425b bump version to 1.4 for further development 2020-01-15 12:16:53 -08:00
daan
c9b5ac80b3 update page reset queue to just do delayed page resets 2020-01-15 12:00:44 -08:00
daan
783e3377f7 add output argument to stat printing 2020-01-15 10:53:54 -08:00
daan
0956a05bf6 add argument pointer to the register deferred free callback 2020-01-15 10:21:32 -08:00
daan
f92a2a7264 add argument pointer to the register output routine 2020-01-15 10:18:32 -08:00
daan
941c55ee42 wip: first implementation of page free list on segments for effecient delayed page reset 2020-01-14 21:47:18 -08:00
daan
88b141cf1f ensure proper padding for the page structure 2020-01-13 20:48:37 -08:00
daan
4a27ea1643 merge from dev 2020-01-13 18:01:34 -08:00
daan
12ef2816ed fix bug exposed by commit 59fa286 where reclaimed pages could be stuck to NEVER_DELAYED 2020-01-08 19:00:03 -08:00
daan
683d8998d4 fix potential A-B-A problem with segment abandonment; noticed by Manual Poeter and Sam Gross 2020-01-08 17:45:38 -08:00
Kirsten Lee
743e891738 add stl mimalloc wrapper 2020-01-06 16:18:22 -08:00
daan
2b108c8748 increase retire expiration to 4 2020-01-03 21:39:18 -08:00
daan
eeb623e6af increase retire limit, collect retired pages 2020-01-03 17:06:41 -08:00
daan
f9ca88f71c set secure default to 0 again 2020-01-02 17:57:41 -08:00
daan
fc3e537bd4 improve double free detection with faster same page check 2019-12-28 15:28:13 -08:00
daan
77134e1ad0 update free list encoding to stronger formula with addition last 2019-12-28 15:17:49 -08:00
daan
e3391d9a53 stronger encoding of free lists using two keys per page 2019-12-28 00:57:42 -08:00
daan
ba87a39d9f updated random cookie generation using OS primitives and chacha20 2019-12-22 19:37:49 -08:00
daan
a799a19136 fix non-standard line continuation 2019-11-25 14:30:12 -08:00
Daan
fe51d11e61
Merge pull request #178 from carenas/master
avoid deadlock with BSD systems that call malloc from the dynamic linker
2019-11-25 14:28:58 -08:00
daan
b5fbdb7180 merge from dev 2019-11-25 11:16:39 -08:00
daan
1d998af854 clean up options; make secure work with eager_page_commit 2019-11-25 10:47:17 -08:00
daan
c6df7a199c experimental eager page commit option 2019-11-24 22:02:40 -08:00
daan
41af533a34 define commit unit in terms of segment size 2019-11-24 19:17:56 -08:00
daan
ec0005b919 more fine grained commit tracking per MiB 2019-11-24 19:09:15 -08:00
Carlo Marcelo Arenas Belón
41ef691292 avoid deadlock with BSD systems that call malloc from the dynamic linker
extend the exception used for macOS to cover also OpenBSD (tested in 6.4+)
and DragonFlyBSD (tested in 5.6.2)
2019-11-24 10:00:39 -08:00
daan
f45ec667a3 Merge branch 'dev' into dev-arena 2019-11-22 09:29:00 -08:00
daan
24b768363e bump version to 1.3 for further development 2019-11-22 09:28:48 -08:00
daan
7da00c1220 wip: full decommit delay, for arena cache as well 2019-11-21 20:57:32 -08:00
daan
321e18777e wip: delayed decommit on segments 2019-11-21 19:53:43 -08:00
daan
1066be1594 merge from dev-exp 2019-11-21 17:03:30 -08:00
daan
50575b12c0 Merge branch 'dev' into dev-exp 2019-11-21 16:29:59 -08:00
daan
41caf6d0f8 set secure default to 0 2019-11-21 16:29:46 -08:00
daan
6568059cc6 merge from dev 2019-11-21 16:28:28 -08:00
daan
d55ab50a84 update version to 1.2 2019-11-21 16:10:04 -08:00
daan
74dbfc30be improved security by encoding NULL values; double free mitigation on by default; more precise free list corruption detection 2019-11-21 15:21:23 -08:00
Daan Leijen
211f1aa519 remove reset delay slots; add reset tracking per page and segment 2019-11-20 14:55:12 -08:00
Daan Leijen
30e2c54adb remove delayed reset option (for now) 2019-11-20 14:13:02 -08:00
daan
17ade3fca5 merge from dev 2019-11-13 17:52:20 -08:00
daan
314dcd59c2 Merge branch 'dev' of https://github.com/microsoft/mimalloc into dev 2019-11-13 17:23:54 -08:00
daan
a4ed63d127 Adresses pr #165 and issue #164 by @colesbury:
On Mac OS, the thread-local _mi_default_heap may get reset before
_mi_thread_done is called, leaking the default heap on non-main threads.

Now the current default heap is also stored in mi_pthread_key (or mi_fls_key
on Windows). The _mi_thread_done function is called with this value.
2019-11-13 17:22:03 -08:00
Daan
9b7a29c5da
Merge pull request #172 from aesophor/dev
Avoid the use of variable argument list function
2019-11-13 16:28:09 -08:00
Daan Leijen
d01ed42bcb replace max_numa_nodes by use_numa_nodes (to help with wrong detection of numa nodes on WSL for example) 2019-11-13 13:35:50 -08:00
Marco Wang
29919a938d Avoid the use of variable argument list function 2019-11-13 13:19:21 +08:00
Daan Leijen
bdb8274819 change max_numa_node to max_numa_nodes option 2019-11-12 12:04:43 -08:00
daan
ef179a6377 avoid allocation at numa node detection on linux 2019-11-12 10:16:59 -08:00
daan
a0958b2da6 enable more reset delay slots 2019-11-11 17:06:16 -08:00
daan
741a80256d merge from dev-exp 2019-11-11 14:51:16 -08:00
daan
2bb058bd25 remove cache_reset parameter 2019-11-11 14:44:32 -08:00
daan
83a066fd2d remove reset_decommits option 2019-11-11 09:46:02 -08:00
daan
181bef382c merge dev-exp 2019-11-10 11:39:53 -08:00
Daan Leijen
b04206a9d3 add os cache to arena 2019-11-10 10:10:10 -08:00
Daan Leijen
fed0068dac merge from dev-exp; bitmap based arena 2019-11-10 07:56:40 -08:00
daan
27f1a8b3d2 fix avg display; set secure default to 0` 2019-11-07 10:35:30 -08:00
daan
36090dee5c Merge branch 'dev' into dev-exp 2019-11-07 10:34:06 -08:00
daan
31d11f64d5 fix secure free list extension where a non-empty initial free list was discarded 2019-11-07 10:33:45 -08:00
daan
378716c467 refactor and improve atomic bitmap usage 2019-11-07 10:26:52 -08:00
daan
b09282bc0d change arena allocator to atomic bitmap as well 2019-11-06 22:49:01 -08:00
daan
00e19cad9a refactor region code, split out atomic bitmap 2019-11-06 21:37:23 -08:00
daan
829fd872f4 initial delay slots 2019-11-04 11:48:41 -08:00
daan
62df2e2df9 merge from dev-exp 2019-11-04 08:56:42 -08:00
daan
c38af8f7c1 merge d1d65fbc: make max error messages configurable 2019-11-04 08:49:59 -08:00
daan
8afd06b248 use int64 for time (instead of double) 2019-11-04 08:44:40 -08:00
daan
2b005addd3 merge from dev-exp 2019-11-03 13:37:03 -08:00
daan
d1d65fbca4 make max error messages configurable 2019-11-03 13:25:41 -08:00
daan
1a6d150687 merge from dev-exp 2019-11-03 12:21:22 -08:00
daan
e320488791 add numa nodes to stats 2019-11-03 12:18:32 -08:00
daan
e0b8ec7f54 merge with dev-exp 2019-11-02 11:56:19 -07:00
daan
fd9d8c85ae change numa support on linux to use getcpu 2019-11-02 11:55:03 -07:00
daan
08c4726043 merge from dev-exp 2019-11-01 22:04:20 -07:00
daan
2c12d7f223 optimized numa calls; better Linux support 2019-11-01 22:01:52 -07:00
daan
6b26f0cb17 merge from dev-exp (numa support) 2019-11-01 20:08:56 -07:00
daan
a6499be074 initial numa support for arenas 2019-11-01 19:53:07 -07:00
daan
62984c0a24 merge from dev-exp 2019-10-31 18:44:48 -07:00
daan
d36d04b4a6 add arena for huge page management 2019-10-31 15:35:10 -07:00
daan
6695f8ae91 add allow_decommit option 2019-10-31 10:59:50 -07:00
daan
f7d2c45af3 initial experiment with fixed memory arena and sliced segments 2019-10-31 00:40:41 -07:00
daan
c7ec30ae25 fix secure mode 2019-10-30 15:36:13 -07:00
daan
b73beede34 merge from dev 2019-10-30 15:19:34 -07:00
daan
b052d3b731 enable double free and heap corruption detection in debug mode 2019-10-28 15:54:33 -07:00
daan
081e2d1eb6 fix statistics display 2019-10-28 13:43:42 -07:00
daan
9d4f57abf3 merge from dev-win 2019-10-28 12:33:01 -07:00
daan
25246070ae fix double free check in secure = 4 mode; inline _mi_ptr_cookie 2019-10-19 08:34:18 -07:00
daan
2affdbbd2e stronger secure mode when defining MI_SECURE=4: checks for double free, corrupted free list, and invalid pointer frees. Performance is impacted but not too much -- more perf testing is needed 2019-10-18 18:11:04 -07:00
daan
4b15e2ed97 merge from dev 2019-10-17 18:24:35 -07:00
daan
fdfa6ed260 fix warnings at high warning level in msvc 2019-10-17 16:56:57 -07:00
daan
5de851a84d update page_flags to have more portable definition 2019-10-17 16:48:16 -07:00
daan
26c27fbf58 use uint8_t bit fields, and improve portability of page_flags type 2019-10-17 12:07:26 -07:00
Johannes Schindelin
559688ec64 Suppress warning about unnamed struct
This prevents MSVC complaining with

	warning C4201: nonstandard extension used: nameless struct/union

The struct might seem unnecessary to the occasional reader (it did seem
so to this commit's author), but it is not! It is required to align the
fields to a boundary, which is verified by the test suite. Removing that
"unnecessary" `struct` results in this failure:

1: Test command: mimalloc-test-api
[...]
1: test: malloc-zero...  mimalloc: assertion failed: at src/page.c:591, mi_page_init
1:   assertion: "!mi_page_has_aligned(page)"

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2019-10-17 20:43:18 +02:00
Johannes Schindelin
e747a6f3a6 Use unsigned for bit-field variables
It is actually non-standard to use `bool` with a bit-field quantifier,
and VS 2019 complains about this.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2019-10-17 20:43:18 +02:00
daan
f3a162f095 pick better umul_overflow variant based on size_t size 2019-10-17 09:52:10 -07:00
daan
4609537b8a pick better umul_overflow variant based on intptr size 2019-10-17 09:47:12 -07:00
Daan Leijen
114d05cd76 bump to version 1.1 2019-10-07 09:54:23 -07:00
daan
60efb62155 make secure a build option only 2019-09-17 17:31:42 -07:00
daan
33f4ec4ac6 put new-delete overrides in separate header file 2019-09-15 19:19:00 -07:00
daan
6896408ab1 fix definition of mi_recalloc_tp 2019-09-11 20:49:18 -07:00
daan
24777f6a91 limit aligned allocation to power-of-two alignment 2019-09-11 17:49:28 -07:00
Daan Leijen
1909cfb346 refine mi_os_good_alloc_size and use it for huge pages (to ensure realloc is bounded as in #153 2019-09-10 13:26:51 -07:00
daan
ce81af1119 use mi_is_power_of_two when possible (pr #118) 2019-09-09 08:12:50 -07:00
daan
23155c5d71 add recursion guard to deferred callback 2019-09-09 08:02:41 -07:00
daan
3bbc047ba6 reserve huge pages returns actual number of pages reserved 2019-09-04 12:26:02 -07:00
daan
6c43ae2bde add later thread-done invokation; add mi_is_redirected call 2019-09-04 12:00:41 -07:00
daan
a6a956c589 add back zero initialized re-allocation 2019-09-03 10:57:39 -07:00
daan
7a91368108 pass page to block_zero_init and extend to block_size 2019-09-03 10:11:24 -07:00
daan
d1bd1644d5 support zero-initialized memory detection 2019-09-02 13:16:52 -07:00