Commit graph

117 commits

Author SHA1 Message Date
daan
378716c467 refactor and improve atomic bitmap usage 2019-11-07 10:26:52 -08:00
daan
9d6a5acb22 fix unix build warnings 2019-11-03 13:34:54 -08:00
daan
8725a88fba fix assertion in debug secure mode 2019-10-30 15:22:40 -07:00
daan
4a4d74927c protect against double-free in multi-threaded free list 2019-10-30 14:53:21 -07:00
daan
b052d3b731 enable double free and heap corruption detection in debug mode 2019-10-28 15:54:33 -07:00
daan
87bdfbb9b6 use more conservative retire strategy 2019-10-28 14:12:06 -07:00
daan
081e2d1eb6 fix statistics display 2019-10-28 13:43:42 -07:00
daan
28d4ec4c5a fix statistics accounting of huge pages 2019-10-28 13:14:14 -07:00
daan
5de851a84d update page_flags to have more portable definition 2019-10-17 16:48:16 -07:00
daan
60efb62155 make secure a build option only 2019-09-17 17:31:42 -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 Leijen
d278c26c0e round huge page sizes into 12.5% increments (issue #153) 2019-09-10 07:54:31 -07:00
daan
b104e434e4 fix volatile declaration on function 2019-09-09 08:07:35 -07:00
daan
23155c5d71 add recursion guard to deferred callback 2019-09-09 08:02:41 -07:00
daan
89858ab791 improve page_free_extend performance slightly; do not maintain expensive statistics in release mode 2019-09-06 16:48:48 -07:00
daan
7a91368108 pass page to block_zero_init and extend to block_size 2019-09-03 10:11:24 -07:00
daan
739d11313c fix commit zero on windows 2019-09-02 14:53:22 -07:00
daan
d1bd1644d5 support zero-initialized memory detection 2019-09-02 13:16:52 -07:00
daan
64c1d6de86 fix mi_likely branch that was marked as unlikely 2019-08-29 07:50:35 -07:00
daan
a654732d99 merge from dev new atomics 2019-08-26 12:30:03 -07:00
daan
e8664001f7 Use standard _Atomic declarations and clean up atomic operations 2019-08-25 22:59:12 -07:00
daan
23c35f4aba merge from dev 2019-08-25 13:07:07 -07:00
daan
038e8fd7d6 reduce retire size 2019-08-25 12:10:18 -07:00
daan
a431d80fc3 better object sizes for large objects 2019-08-25 10:20:03 -07:00
daan
23812cc0ac do not keep a queue of huge pages and free them directly 2019-08-24 15:45:14 -07:00
daan
6c6fcad242 remove threadid from pages and keep page flags separate (cherry picked) 2019-08-23 21:42:24 -07:00
daan
acde83543f remove threadid from pages and keep page flags separate 2019-08-23 14:08:00 -07:00
daan
b005f7cdbf Merge branch 'dev' into dev-win 2019-08-20 09:46:05 -07:00
daan
ff88361329 lower block size for keeping retired pages 2019-08-20 09:45:50 -07:00
daan
05631ebfc4 Merge branch 'dev' into dev-win 2019-08-19 21:23:04 -07:00
daan
2066e2797d don't allow allocations larger than PTRDIFF_MAX, issue #121 2019-08-19 19:29:27 -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
daan
dbe010f2d4 add huge and giant stats; increase bins 2019-08-10 20:51:37 -07:00
daan
ed785253bf restructure the page flags to use explicit masks 2019-08-10 17:48:00 -07:00
daan
6f3bc87dcd merge from dev 2019-08-10 10:26:46 -07:00
daan
ccc78302bf fix double assignment (#125, by @ebudai) 2019-08-10 09:53:00 -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
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
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
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
daan
8dc0b5345b Merge branch 'dev' into dev-exp 2019-07-14 16:50:38 -07:00
daan
49ceb4d018 refactor delayed_free code 2019-07-14 16:48:53 -07:00
daan
5ad2effb39 use standard compliant compilation of the thread_free atomic field 2019-07-14 16:20:27 -07:00
daan
2cf419c9bc Merge branch 'master' into dev 2019-07-14 14:50:39 -07:00