244 Commits

Author SHA1 Message Date
daan
364674185e add option to limit OS allocation and only allow allocation from arenas 2020-09-08 16:56:51 -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
f09549c98f use main stats for thread count 2020-09-05 18:00:36 -07:00
daan
0d0b5e3fad restore stress workload for windows pipeline 2020-09-05 11:19:35 -07:00
daan
78f1f9bd5e reduce stress workload for windows pipeline 2020-09-05 11:16:40 -07:00
daan
d73d6beb71 add aslr test (issue #289) 2020-09-04 10:41:10 -07:00
daan
900c97664a merge from dev-atomic 2020-09-03 09:47:01 -07:00
daan
b4825372ab small compilation warning fixes (extra semicolon etc) 2020-08-29 19:30:38 -07:00
daan
a9686d6ecf avoid link error on non-windows 2020-08-06 13:37:11 -07:00
daan
a468430772 strengthen memory order of bit operations; insert memory fences 2020-07-26 14:19:30 -07:00
daan
8769082d63 add pointer validity check in debug mode for mi_usable_size/mi_realloc/mi_expand. Issue #269 2020-07-20 14:33:03 -07:00
daan
7c24edfeb0 add thread-id check for thread local FLS callbacks on Windows with static linking; found by @jasongibson 2020-05-04 14:31:32 -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
afc4f79a69 fix for ensuring heap initialization with static linking on windows on huge allocations (issues #221) 2020-04-06 12:15:12 -07:00
daan
0a3e5bb699 further fixes to compile on mingw without warnings (issue #217) 2020-04-06 10:56:53 -07:00
daan
faa83a1c47 fix issue number: 212 to #221 2020-04-06 09:19:26 -07:00
daan
c7e9cfd3ed add test case for issue #212 2020-04-06 08:32:25 -07:00
Daan
1ece3ff6aa
Merge pull request #220 from cormacrelf/usable_size
Don't call mi_page_usable_size_of with an aligned pointer
2020-04-06 08:05:34 -07:00
Cormac Relf
414acd49ab Add test to exercise mi_usable_size on aligned allocations 2020-04-06 22:50:21 +10:00
daan
ec61224db0 fix padding issue with zero sized allocation (issue #209) 2020-02-18 20:05:30 -08:00
daan
baf08e8d54 fix size check on overflow when padding is enabled in debug mode 2020-02-17 09:59:34 -08:00
daan
e981e9227e ensure thread delayed freeing is correct during heap_absorb; #204 2020-02-13 13:12:19 -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
946a71c4a9 fix issue #204 (and #205) by doing thread delayed free after absorbing the pages 2020-02-13 11:37:48 -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
b241be7075 reenable mimalloc in the stress test 2020-02-02 22:08:33 -08:00
daan
d516c9f99c Merge branch 'dev-exp' into dev-exp-tls 2020-02-02 22:02:16 -08:00
daan
f3c47c7c91 improved malloc zone handling on macOSX (not working yet) 2020-02-02 21:03:09 -08:00
daan
f0dc6e7e42 add extra alignment test 2020-02-02 16:21:06 -08:00
daan
bb64634e4e Merge branch 'dev-exp' into dev-exp-tls 2020-02-01 17:48:57 -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
a169cf0e3f merge dev-exp; add pthread TLS support for macOSX 2020-02-01 14:10:10 -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
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
19a0d9dfa0 clean up stress test 2020-01-25 12:51:56 -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
e070eba112 fix tagged null encoding, search segment cache before reclaim 2020-01-24 16:31:18 -08:00
daan
8cf4882a85 fix linux build 2020-01-24 10:38:25 -08:00
daan
8b1520f5c1 make stress test deterministic 2020-01-23 21:53:28 -08:00
daan
58fdcbb0cd fix bug in collect where has_page was not set on free pages 2020-01-23 21:37:14 -08:00
daan
f8ab4bd7dc add leak test 2020-01-23 19:49:32 -08:00
daan
66818bf632 use atomic yield on delayed-freeing; clarify code 2020-01-23 09:57:55 -08:00
daan
0f14f431c5 bump version to 1.5 for further development 2020-01-22 18:33:07 -08:00
daan
5bc1c52ae6 update documentation 2020-01-20 17:34:29 -08:00
daan
146899af8a add missing members to stl allocator (#193) 2020-01-20 15:27:05 -08:00
daan
9d7ac76d93 fix compilation under Intel C compiler (icc) 2020-01-19 18:35:45 -08:00
daan
e8d7c80c74 fix build warnings on linux 2020-01-19 17:33:36 -08:00
daan
41e717c2e0 fix assertion in mi_block_zero_init (issue #194) 2020-01-18 20:30:12 -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
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
daan
202246425b bump version to 1.4 for further development 2020-01-15 12:16:53 -08:00
daan
783e3377f7 add output argument to stat printing 2020-01-15 10:53:54 -08:00
daan
940df53b0a fix iteration count display in stress test 2020-01-08 17:57:17 -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
daan
5d2f111f64 make the stress test do more iterations under a smaller load to stay under 1GiB committed and increase thread interaction 2020-01-08 16:33:45 -08:00
Kirsten Lee
0a2520490b only include vector header when compiling c++ 2020-01-06 16:44:55 -08:00
Kirsten Lee
743e891738 add stl mimalloc wrapper 2020-01-06 16:18:22 -08:00
Daan Leijen
0d3c195f37 update stress test with more documentation 2019-11-22 11:28:55 -08:00
daan
24b768363e bump version to 1.3 for further development 2019-11-22 09:28:48 -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
b820009df7 update documentation 2019-11-21 16:09:34 -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
56b9fac4bf merge from dev 2019-11-20 13:31:04 -08:00
Daan Leijen
94bfb47725 update stress test for more realisitic size distribution 2019-11-20 12:59:26 -08:00
daan
fd3ce5dc7d improve stress test 2019-11-15 16:28:11 -08:00
Daan Leijen
8637f113d5 improve test-stress to run multiple iterations 2019-11-15 14:09:17 -08:00
Daan Leijen
d2279b2a3f update test-stress with better object distribution 2019-11-10 08:13:40 -08:00
Daan Leijen
7b72a4cd50 fix region suitable bug 2019-11-08 11:55:43 -08:00
daan
378716c467 refactor and improve atomic bitmap usage 2019-11-07 10:26:52 -08:00
daan
a69016c33e improve and document numa support 2019-11-02 10:30:16 -07:00
daan
b052d3b731 enable double free and heap corruption detection in debug mode 2019-10-28 15:54:33 -07:00
daan
28d4ec4c5a fix statistics accounting of huge pages 2019-10-28 13:14:14 -07:00
daan
ff9f29660b remove double_free call 2019-10-28 12:27:32 -07:00
daan
5dfdc092b5 improve windows warning message 2019-10-28 12:26:57 -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
0e188a18a7 update test to match malloc with free 2019-10-17 09:21:20 -07:00
daan
24777f6a91 limit aligned allocation to power-of-two alignment 2019-09-11 17:49:28 -07:00
daan
8903d7a526 fix tests for aligned allocation 2019-09-09 08:21:35 -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
136e120d51 update redirection modules 2019-09-01 17:21:58 -07:00
daan
e7bd8c5d14 merge with dev-win 2019-08-21 11:11:40 -07:00
daan
86d4ded831 Merge branch 'dev' into dev-exp 2019-08-20 08:27:46 -07:00
daan
a5071eb510 Merge branch 'dev' into dev-win 2019-08-20 07:50:03 -07:00
daan
27d794b5f4 fix option_enable call 2019-08-20 07:49:40 -07:00
daan
a8b24472cb use 1GiB huge pages on windows when reserving upfront 2019-08-19 18:16:12 -07:00
daan
42dedb00ec initial implementation of mi_os_reserve_huge_pages 2019-08-19 11:10:06 -07:00
daan
d71e67b689 Merge branch 'dev' into dev-exp 2019-08-11 09:00:39 -07:00
daan
dbe010f2d4 add huge and giant stats; increase bins 2019-08-10 20:51:37 -07:00
daan
3d9d70bce0 add new redirection module; fix environment reading at preloading 2019-08-10 09:39:36 -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
bbf97fa02d merge from 'dev-exp'; add support for MIMALLOC_OVERRIDE environment variable 2019-07-26 12:06:15 -07:00
daan
13364b50b8 fix 32-bit build of stress test 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
48a3d0c6e2 fix 32-bit build of stress test 2019-07-23 09:37:36 -07:00
daan
7c26ce9280 ensure C++ compilation on windows 2019-07-22 10:27:14 -07:00
daan
80e09ef44e merge from dev 2019-07-22 10:16:59 -07:00
daan
86cadca059 more comments 2019-07-22 16:11:06 -07:00
daan
e90938fb4b merge 2019-07-22 10:10:45 -07:00
daan
e4caee5f55 update test files and overriding 2019-07-22 01:36:16 -07:00
daan
2f63964e5c update stress test to be more deterministic 2019-07-19 08:55:02 -07:00
daan
93c8a5b693 full overriding api supported 2019-07-18 21:12:40 -07:00
daan
306a542336 add mimalloc-override header file and use C++ compilation with msvc 2019-07-18 20:28:29 -07:00
daan
12e0a04052 compile as C++ under msvc 2019-07-18 19:52:29 -07:00
daan
c228ecefd8 update for new dynamic direction on windows 64-bit 2019-07-18 18:59:32 -07:00
daan
7ea9cf8d1f add region collection 2019-07-15 14:53:03 -07:00
daan
08c873c250 Merge branch 'dev' into dev-exp 2019-07-14 20:35:01 -07:00
daan
461b8aed80 more complete C++ support for compliance and performance 2019-07-14 19:56:33 -07:00
daan
672506a3b3 merged with dev-win 2019-07-14 12:57:47 -07:00
daan
e60a5db908 fix cache eviction of smaller segments 2019-07-14 12:52:58 -07:00
daan
f844665c9f merge from dev-win 2019-07-10 22:57:37 -07:00
daan
34a4de01b1 add Visual Studio support for new stress target 2019-07-10 21:59:44 -07:00
daan
12d3297db5 add allocator stress test to the test targets 2019-07-10 21:52:28 -07:00
daan
35b590de21 Merge branch 'dev' into dev-exp 2019-07-09 15:12:18 -07:00
daan
cf8815854c fix cmake issues with OBJECT install 2019-07-09 11:32:24 -07:00
daan
129149977d Merge branch 'dev' into dev-exp 2019-07-08 17:45:04 -07:00
daan
76023ca45f fix path max in realpath on unix (pr #69) 2019-07-08 17:43:10 -07:00
daan
493dfc4b82 merge with dev 2019-07-08 15:42:42 -07:00
daan
fc35f6069a Add NO_SYSTEM_ENVIRONMENT_PATH and example of linking with the object file; pr #67 2019-07-08 13:37:41 -07:00
daan
c3528203b5 fix compilation with C++, fix overrides in C++ to adhere to the spec (issue #26) 2019-07-07 18:11:21 -07:00
daan
dd59a917ce Expose mi prefixed public standard implementations of various posix, unix, and c++ allocation functions. See issue #75 2019-07-07 13:44:33 -07:00
daan
983c96a238 Merge branch 'dev' into dev-exp 2019-07-04 14:46:53 -07:00
daan
3039dbfcdd for windows dynamic override, add standard api override and stop patching new/delete (for now) 2019-07-04 09:29:33 -07:00
daan
663769c512 merge dev branch 2019-07-03 18:12:55 -07:00
daan
9390642879 fix windows dynamic malloc overried when both ucrtbase and msvcrt are loaded; also fix virtualalloc2 on 32-bit 2019-07-03 13:00:43 -07:00
daan
06bcea1761 Initial commit of separate memory region layer and improved large OS pages support, see 'memory.c' 2019-07-02 07:23:24 -07:00
daan
6eaf387891 Add support for aligned allocation on Windows using VirtualAlloc2 2019-06-28 19:48:30 -07:00
daan
ae47a2b13e Add initial testing file, test target, and readme about testing, issue #10, pr #57 2019-06-27 13:36:19 -07:00
daan
4c87643c29 add check to see if we truly override the system malloc 2019-06-27 13:34:50 -07:00
daan
a16d95375f remove lock code from atomics (as it is unused) 2019-06-24 17:54:41 -07:00
daan
26a874eb3f initial checkin 2019-06-19 16:26:12 -07:00