644 Commits

Author SHA1 Message Date
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
13a4030619 bump version to 1.6.7 2020-09-24 16:30:40 -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
d0d3634143 bump version for further development 2020-09-24 09:29:37 -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
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
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
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
46ee8952eb update mi_process_info to not use doubles 2020-09-06 13:53:02 -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
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
2e311f341b fix msvc compilation in C mode 2020-09-05 09:37:09 -07:00
daan
50de0d2358 fix C++ compilation with new atomics 2020-09-05 09:17:42 -07:00
daan
f107acb3c8 fix __cplusplus test (pr #287) 2020-09-04 10:40:05 -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
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
a7d2bc8ad6 edit warning messages to be more consistent 2020-05-19 10:16:28 -07:00
daan
cefc930f72 bump version to 1.6.4 for further development 2020-05-05 10:47:46 -07:00
daan
5cfdc39ff1 remove on-demand page commit option 2020-04-30 18:23:33 -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
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
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