579 Commits

Author SHA1 Message Date
daan
741f37e1f0 always check large_os_pages enabled option so it can be changed during the running of the program 2019-08-19 11:17:00 -07:00
daan
42dedb00ec initial implementation of mi_os_reserve_huge_pages 2019-08-19 11:10:06 -07:00
daan
8d28713a35 Merge branch 'dev' into dev-win 2019-08-19 08:13:53 -07:00
daan
61ebaaa403 Merge branch 'dev' of https://github.com/microsoft/mimalloc into dev 2019-08-19 08:10:11 -07:00
Daan Leijen
367fb046ec Merge branch 'dev' into dev-win 2019-08-16 18:40:56 -07:00
Daan Leijen
069c26dbab fix small object size check in mi_segment_page_alloc 2019-08-16 18:40:30 -07:00
daan
6d11e59250 fix to avoid potential linear behavior in page collect 2019-08-14 07:46:38 -07:00
David Carlier
b0003cb101 linux build correction
MAP_HUGE_2MB is linux specific and the related header
is not automatically included.
2019-08-14 15:07:13 +01:00
daan
d3375f2bac fix assertion in mi_free_size 2019-08-12 13:50:41 -07:00
daan
ab53da679e Merge branch 'dev' into dev-exp 2019-08-12 13:43:29 -07:00
daan
178ea0840c roll back commit #72d8608 to avoid spin lock contention on region allocation 2019-08-12 13:40:19 -07:00
daan
113a3cc1a2 Merge branch 'dev' into dev-exp 2019-08-12 09:20:16 -07:00
daan
8ca79b5359 Hide MEM_EXTENDED_PARAMETER to compile on older SDK's 2019-08-12 08:58:22 -07:00
daan
62de76a327 fix C++ compilation of stress test 2019-08-12 08:55:20 -07:00
daan
8b2194c160 merge from master 2019-08-12 15:50:21 -07:00
Daan
cbc826beb5
Merge pull request #126 from JeanMiK/fix_C++_signature_of_mi_is_in_heap_region
Fix C++ signature of function mi_is_in_heap_region
2019-08-12 08:45:04 -07:00
JeanMiK
3f43cbe6a1 Fix C++ signature of function mi_is_in_heap_region
Original code did not compile with MI_USE_CXX=ON as function
mi_is_in_heap_region was declared noexcept through macro mi_attr_noexcept
but defined without specification, i.e. implicitly with noexception(false)

Just adding the macro in the definition is enough to fix the issue
(tested with gcc 8.3.5)
2019-08-12 12:43:01 +02:00
daan
63d4d2ad9c Merge branch 'dev' into dev-exp 2019-08-12 01:59:31 -07:00
daan
648f535c80 improve support for transparent huge pages on Linux (pr #115) 2019-08-11 18:23:31 -07:00
daan
0061e88360 updated redirection module 2019-08-11 16:45:20 -07:00
daan
f35c2c5201 improve message printing from redirection module 2019-08-11 16:38:58 -07:00
daan
0c912445c4 Merge branch 'dev' into dev-exp 2019-08-11 14:46:53 -07:00
daan
feb7b2c160 improve bit range skipping in region search 2019-08-11 13:49:12 -07:00
daan
3a75a9d5be use bit-scan instruction to speed up region search 2019-08-11 13:03:00 -07:00
daan
0fd898315c per thread region search index 2019-08-11 12:15:13 -07:00
daan
2e924150ae further layout improvement for msvc code generation 2019-08-11 11:30:24 -07:00
daan
7b105c4810 improve layout of page for x64 2019-08-11 10:31:00 -07:00
daan
2c1da9d194 fix scalar initialization of page flags 2019-08-11 09:03:52 -07:00
daan
d71e67b689 Merge branch 'dev' into dev-exp 2019-08-11 09:00:39 -07:00
daan
3a171624bd Merge branch 'master' into dev 2019-08-11 08:59:38 -07:00
daan
a73daf1804 avoid mod operation in region allocation and limit extension 2019-08-11 08:54:32 -07:00
daan
756f4b2724 improve bit scanning code in region allocation 2019-08-11 08:48:19 -07:00
daan
6435887657 add comment on wait strategy in region allocation 2019-08-11 08:18:51 -07:00
daan
f5902a7a82 ensure webassembly allocation sizes are page aligned 2019-08-11 08:06:17 -07:00
daan
a1384bff72 avoid atomic read on aligned allocation on Linux 2019-08-11 08:00:10 -07:00
daan
dbe010f2d4 add huge and giant stats; increase bins 2019-08-10 20:51:37 -07:00
daan
737b05cc25 remove unused fields from OS thread local data 2019-08-10 17:50:27 -07:00
daan
ed785253bf restructure the page flags to use explicit masks 2019-08-10 17:48:00 -07:00
daan
a90dc02984 Merge branch 'dev' into dev-exp 2019-08-10 17:27:52 -07:00
daan
c0258b2d29 Merge branch 'master' into dev 2019-08-10 17:27:22 -07:00
daan
b74f9b979f update documentation 2019-08-10 17:27:07 -07:00
Daan
6bc6628ad4
Update readme.md
Start documenting releases
2019-08-10 17:12:05 -07:00
Daan
f7ed954c7c
Update readme.md
Notes on dynamic overriding; document environment options
2019-08-10 17:07:40 -07:00
daan
576691b07e Merge branch 'dev-win' into dev-exp 2019-08-10 15:56:56 -07:00
daan
49b1f55029 Merge branch 'dev-win' into dev 2019-08-10 15:56:26 -07:00
daan
74a5c17178 update order of options; make eager_region_commit 0 on windows by default v1.0.6 2019-08-10 15:44:55 -07:00
daan
2fee6f98d7 Merge branch 'master' into dev 2019-08-10 15:23:43 -07:00
daan
2b9e3ed01b merge from dev-win 2019-08-10 15:19:04 -07:00
daan
78a70ada2e Fix option reading even when preloading on Windows 2019-08-10 15:17:40 -07:00
daan
d9cbc457b8 Merge branch 'dev-win' into dev-exp 2019-08-10 15:11:51 -07:00
daan
6f3bc87dcd merge from dev 2019-08-10 10:26:46 -07:00
daan
8ae2492eee fix arguments for the heap visitor function, issue #124 2019-08-10 10:14:01 -07:00
Daan
5b4c4ac959
Merge pull request #117 from devnexen/darwin_anon_monitor
darwin, tracking anonymous page lifetime.
2019-08-10 09:58:35 -07:00
daan
ccc78302bf fix double assignment (#125, by @ebudai) 2019-08-10 09:53:00 -07:00
daan
3d9d70bce0 add new redirection module; fix environment reading at preloading 2019-08-10 09:39:36 -07:00
daan
19163c7097 Merge branch 'dev-win' into dev-exp 2019-08-09 15:32:23 -07:00
daan
b1938530af fix comment 2019-08-09 14:31:45 -07:00
daan
7b16aa9302 remove accidental commit of different size bins experiment 2019-08-09 11:22:38 -07:00
daan
442bad9190 add good-fit for allowing larger blocks in smaller segments 2019-08-09 11:18:38 -07:00
daan
5e56b40fe6 improve page flags handling 2019-08-08 17:18:49 -07:00
daan
de57686dac Merge branch 'dev-win' of https://github.com/microsoft/mimalloc into dev-win 2019-08-08 15:23:27 -07:00
daan
6596e970a5 move in_full and has_aligned into page threadid for a single test in mi_free 2019-08-08 15:23:18 -07:00
daan
55778d2fe4 improved stats 2019-08-08 11:36:13 -07:00
daan
56778fe7d2 split normal and secure extend in a separate routine 2019-08-06 18:57:53 -07:00
daan
6313c21d93 fix output directory in test projects 2019-08-06 18:25:57 -07:00
Jakub Szymanski
0e8241c140 change from MIMALLOC_OVERRIDE to MIMALLOC_DISABLE_OVERRIDE 2019-07-30 10:36:00 -07:00
David Carlier
82ab9b4bd6 tracking anonymous page lifetime on macOS.
this platform allows to tag them per application up to 255.
2019-07-27 23:05:05 +01:00
daan
d1f708af59 add MIMALLOC_OVERRIDE setting to disable redirection at runtime 2019-07-26 13:01:43 -07:00
daan
bbf97fa02d merge from 'dev-exp'; add support for MIMALLOC_OVERRIDE environment variable 2019-07-26 12:06:15 -07:00
daan
613d0c1993 merge 095a87b 2019-07-23 18:00:07 -07:00
daan
095a87be2e add recursion guard for overriding in windows 2019-07-23 17:57:27 -07:00
daan
3d6feead60 add heap region check to cfree 2019-07-23 15:54:47 -07:00
daan
dd79b662f8 restore to old-style windows override; fix debug mode 2019-07-23 15:51:08 -07:00
daan
89da085b67 rename to mimalloc-override.dll and use C compilation 2019-07-23 15:10:25 -07:00
daan
fa5dc17621 fix merge conflicts 2019-07-23 15:09:54 -07:00
daan
ab022e4271 fix mimalloc-redirect path on windows cmake build 2019-07-23 15:00:13 -07:00
daan
c02a0c9b49 ensure cmake uses C++ compilation with MSVC 2019-07-23 15:00:13 -07:00
daan
13364b50b8 fix 32-bit build of stress test 2019-07-23 15:00:13 -07:00
daan
f2f45ad5df fix cmake build on windows 2019-07-23 15:00:13 -07:00
daan
a022049705 remove old comment 2019-07-23 15:00:13 -07:00
daan
189ad0f81d small optimizations, use bitwise aligne 2019-07-23 15:00:13 -07:00
daan
66b8c37ab3 ensure C++ compilation on windows 2019-07-23 15:00:13 -07:00
daan
598ed19c61 more comments 2019-07-23 15:00:13 -07:00
daan
0b4d74a566 merge 2019-07-23 15:00:13 -07:00
daan
219d46ff0c update test files and overriding 2019-07-23 15:00:13 -07:00
daan
6d9fab5af4 trailing id after #endif 2019-07-23 15:00:13 -07:00
daan
b611c7fb34 use atomic ops to guard large page tries on windows 2019-07-23 15:00:13 -07:00
daan
7b7c36c8c7 use hinted address to mmap to reduce mmap calls 2019-07-23 14:59:57 -07:00
Jim Huang
b5e26bedb1 Enforce strict include-what-you-use policy
The include-what-you-use (IWYU) policy is beneficial to faster
compilation and fewer recompilations. Many build tools, such as GNU make,
provide a mechanism for automatically figuring out what .h files a .cc
file depends on. These mechanisms typically look at #include lines. When
unnecessary #includes are listed, the build system is more likely to
recompile in cases where it is not necessary.

With the enforcement, header file <include/mimalloc.h> no longer
includes <stdlib.h>.

Reference:
https://github.com/include-what-you-use/include-what-you-use/blob/master/docs/WhyIWYU.md
2019-07-23 14:59:57 -07:00
Jim Huang
fe229f8fad Fix path name in documentation about macOS 2019-07-23 14:59:57 -07:00
daan
65037d051b improved debug warning for freeing invalid pointers 2019-07-23 14:59:57 -07:00
daan
2eb607d03f re-add missing thread_init needed when running in debug mode 2019-07-23 14:59:57 -07:00
Jim Huang
28b874129a Avoid using strlen function in loop 2019-07-23 14:59:57 -07:00
Jim Huang
3e9c953eea Add branch prediction hint for mi_option_get
mi_option_get is called frequently in stress tests, and the patch adds
extra hint to the compiler to emit instructions that will cause branch
prediction to favour the "likely" side of a jump instruction.
2019-07-23 14:59:49 -07:00
caixiangyue
7266e7006a fix typo 2019-07-23 14:59:49 -07:00
Jim Huang
8dba36bcec Use checked unsigned multiplication extension of GCC/Clang
Most processors have carry flags which they set on addition overflow, so
it is a good idea to access them whenever possible. Most of them also
have widening multiply instructions that can be used to detect overflow
of the non-widening version. Both GCC and Clang offer a way to detect an
overflow for security critical applications.

Reference:
  https://clang.llvm.org/docs/LanguageExtensions.html#checked-arithmetic-builtins
2019-07-23 14:59:49 -07:00
daan
46b11fa0a4 add comment about large pages 2019-07-23 14:59:49 -07:00
daan
0a81d26c83 fix mimalloc-redirect path on windows cmake build 2019-07-23 12:40:42 -07:00
daan
663e63aac2 ensure cmake uses C++ compilation with MSVC 2019-07-23 09:59:20 -07:00
daan
48a3d0c6e2 fix 32-bit build of stress test 2019-07-23 09:37:36 -07:00