Commit Graph

686 Commits

Author SHA1 Message Date
daan
2cfdbc2cbb fix leak in segment cache freeing 2019-07-09 20:22:53 -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
8203f3dcfa add full heap aligned allocation api (issue #52); remove rezalloc (issue #63); add mi_version 2019-07-08 17:17:07 -07:00
daan
4d22ff6d03 Merge branch 'dev' into dev-exp 2019-07-08 15:45:50 -07:00
daan
d656f3e339 merge with master 2019-07-08 15:45:37 -07:00
daan
493dfc4b82 merge with dev 2019-07-08 15:42:42 -07:00
daan
56bdb2c2f3 add more const declarations (pr #79) 2019-07-08 12:00:59 -07:00
daan
7f0137a617 Fix compilation error with MSVC C++ 2019-07-07 21:59:53 -07:00
daan
7e743dfb58 fix C++ compilation warnings with VisualStudio 2017 2019-07-07 18:52:12 -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
David Carlier
a192d6893e initial support of 2MB pages on Mac 2019-07-05 20:05:04 +01:00
daan
b40fe5178a fix static object linking 2019-07-04 14:56:58 -07:00
daan
983c96a238 Merge branch 'dev' into dev-exp 2019-07-04 14:46:53 -07:00
daan
5ff037f8f8 add capability to override multiple entry points in windows dynamic override; and stop patching msvcrt, just crtbase 2019-07-04 12:06:15 -07:00
daan
74dc95c1d6 fix crash triggered in release mode with windows dynamic overriding 2019-07-04 12:04:56 -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
6abdc5f5a3 do not enable verbose by default in the debug build; add trace messages for verbose level 2 2019-07-04 09:28:22 -07:00
daan
069208b184 Possible fix to windows dynamic override calling register onexit directly 2019-07-03 19:47:44 -07:00
daan
663769c512 merge dev branch 2019-07-03 18:12:55 -07:00
Ernesto Castellotti
8c2f52dee8
Suppressed the new GCC 9 -Wmissing-attributes warnings
With the new release of the GCC 9 compiler the operation of -Wmissing-attributes warnings has also been extended to aliases: this causes a warnings if the alias has less attributes than its target.

This warnings does not actually indicate a problem in the mimalloc code and you could safely ignore it by adding "-Wno-missing-attributes" to the CFLAGS, however I was not going to use a "hack" to hide the warning when compiling alloc-override .c

So this patch solves the problem simply by using an attribute (present only in GCC> = 9) that copies the attributes of another function, since this attribute is exclusive only for GCC 9 (or later) I had to use a simple precompiler instruction to add the "copy" attribute only with GCC 9.
2019-07-04 00:21:15 +02:00
daan
c3a5f84ad3 rewrite of low-level OS (aligned) allocation to better handle large pages and aligned allocation 2019-07-03 14:52:32 -07:00
daan
7b4f3591f0 fix dynamic override when both msvcrt and ucrtbase are loaded in any order using priorities 2019-07-03 14:23:30 -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
158705815e fix aligned_ensured bug, trie inc bug, stats in the OS module 2019-07-03 00:16:27 -07:00
daan
10a29f17c8 more conservative shrinking of memory 2019-07-02 22:49:12 -07:00
daan
cec3c4f9ff merge in dev branch 2019-07-02 17:28:15 -07:00
daan
5c0ffe9865 merge back changes to OS module from 'dev-exp' 2019-07-02 17:17:03 -07:00
daan
8cb36c62e6 merge with dev branch 2019-07-02 16:44:35 -07:00
daan
42efe51184 Merge branch 'master' into dev 2019-07-02 16:22:55 -07:00
Daan
f06931ba7e
Merge pull request #65 from devnexen/mi_mmap_prot_max_support
Using BSD new PROT_MAX mmap to block page address wider promotions
2019-07-02 16:21:13 -07:00
daan
b0ceb4a44c forward strdup, strndup, and realpath too 2019-07-02 15:56:01 -07:00
daan
b3f533167b Merge branch 'master' into dev 2019-07-02 15:52:26 -07:00
daan
7dc3a5a18e Merge branch 'master' into dev 2019-07-02 15:44:48 -07:00
daan
04b1fd7b8d Fix macro spelling 2019-07-02 12:57:12 -07:00
daan
4326bda2c7 Fix main heap cookie on macOS 2019-07-02 12:53:53 -07:00
daan
aeff1db32b Fixing interpose on macOS 2019-07-02 12:49:28 -07:00
Daan
825d00a001
Merge branch 'master' into indent-override 2019-07-02 09:03:32 -07:00
daan
d35fc6cdc4 PR#66 by kickunderscore to ensure consistent small block alignment 2019-07-02 08:46:50 -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
David Carlier
bed746d7d6 Using BSD new PROT_MAX mmap to block page address wider promotions 2019-07-01 06:56:16 +00:00
Jim Huang
2347a65fe0 Clarify the comment about Linux distributions
Red Hat Linux was discontinued by Red Hat in 2003. It would make sense
to address glibc-based Linux distributions rather than Red Hat Linux.

Reference: https://en.wikipedia.org/wiki/Red_Hat_Linux
2019-06-30 01:17:13 +08:00
Jim Huang
329a494783 Make forwarding macros friendly to indentation or style checkers
Indention programs such as clang-format usually rely on the occurrence
of statement terminator, otherwise they are likely confused. The revised
forwarding macros do not contain semicolons character, which is friendly
to indentation or style checkers.
2019-06-30 01:06:13 +08:00
daan
d6901558cd enable large OS page support on Windows 2019-06-28 22:35:57 -07:00
daan
6eaf387891 Add support for aligned allocation on Windows using VirtualAlloc2 2019-06-28 19:48:30 -07:00
daan
d2a2508af3 fix overly restrictive assertion 2019-06-27 13:34:14 -07:00
daan
1e636c45da add check for overflowing size allocation 2019-06-27 13:33:28 -07:00
daan
12d756e7b2 fix page count of heap when absorbing 2019-06-27 13:32:44 -07:00
daan
36826a96c9 add power-of-two check to posix_memalign, pr #56 2019-06-27 13:29:00 -07:00
daan
ec2a8f387b strengthen alignment check to be void* aligned 2019-06-27 13:27:53 -07:00
daan
b3ce61c408 fix atomic statistics counter increase 2019-06-25 20:05:43 -07:00
daan
654bcd7049 Merge branch 'master' into dev 2019-06-25 19:57:45 -07:00
Daan
1713c37f9d
Merge pull request #28 from jserv/gcc-visibility
Avoid unnecessary symbol exposure with ELF-based systems
2019-06-25 19:54:28 -07:00
daan
cae02b4676 Merge branch 'master' into dev 2019-06-25 19:45:59 -07:00
Jim Huang
47e822c70f Correct the use of MI_DEBUG by conditional build
MI_DEBUG is a macro rather than a variable.
2019-06-25 21:59:20 +08:00
Frank Denis
59a714725b Read-only strings should be const char * 2019-06-25 12:19:36 +02:00
Frank Denis
236cd2e65c fn() is not a valid C prototype 2019-06-25 12:16:36 +02:00
Jim Huang
256eb97849 Avoid unnecessary symbol exposure with ELF-based systems
GCC's default visibility is "public" but can be changed to
"hidden" with the argument "-fvisibility=hidden".

Tested with x86_64 / Ubuntu Linux 18.04 LTS:

[before]
$ nm -g -C libmimalloc.so | grep "T " | wc -l
142

[after]
$ nm -g -C libmimalloc.so | grep "T " | wc -l
93

This patch does not change the build on macOS.
2019-06-25 10:00:22 +08:00
daan
c1226611c6 Merge branch 'master' into dev 2019-06-24 18:13:04 -07:00
Daan
8bb8852d4f
Merge pull request #17 from jserv/macos-rebranding
Apple rebrands "OS X" as "macOS"
2019-06-24 18:12:06 -07:00
Daan
e86935e108
Merge pull request #18 from jserv/fix-typo
Fix typo
2019-06-24 18:09:26 -07:00
daan
cc951affac fix compilation on older mac systems without CLOCK_MONOTONIC 2019-06-24 18:06:46 -07:00
daan
f36149a9ac fix format specifiers 2019-06-24 12:20:32 -07:00
Jim Huang
855e2f0d89 Use clock_gettime() instead of timespec_get()
clock_gettime(CLOCK_REALTIME, &ts) is equivalent to timespec_get(&ts,
TIME_UTC) in C11.

It has the advantage that avoids the following building error when building
with macOS:

  warning: 'timespec_get' is only available on macOS 10.15 or newer
   [-Wunguarded-availability-new]
2019-06-24 23:56:19 +08:00
daan
cbbd57322a Merge branch 'master' into dev 2019-06-24 08:12:25 -07:00
daan
91222691cb fix more warnings on mingw build 2019-06-24 00:42:45 -07:00
daan
c1c848516c fix warnings on mingw build 2019-06-24 00:37:15 -07:00
daan
faadceadf5 Merge branch 'master' into dev 2019-06-24 00:21:07 -07:00
daan
443fa0fbb5 fix assertions for the new huge page cache 2019-06-24 00:06:22 -07:00
daan
f0731862d6 fix compilation on mingw, issue #25 2019-06-23 23:17:44 -07:00
daan
cd7aa0ce83 improve handling of huge pages in the cache 2019-06-23 23:15:42 -07:00
daan
43568fa422 ensure huge pages are part of the segment cache to avoid mmap calls 2019-06-23 21:37:43 -07:00
daan
e5e2b789ba fix pool commit for windows 2019-06-23 20:41:34 -07:00
Jim Huang
a667971cbf Apple rebrands "OS X" as "macOS"
In 2012, with the release of OS X 10.8 Mountain Lion, the name of the
system was shortened from Mac OS X to OS X. In 2016, with the release
of macOS 10.12 Sierra, the name was changed from OS X to macOS to
streamline it with the branding of Apple's other primary operating
systems: iOS, watchOS, and tvOS.

Reference: https://en.wikipedia.org/wiki/MacOS
2019-06-24 10:15:50 +08:00
Jim Huang
243636b6a1 Fix typo in comment 2019-06-24 10:13:43 +08:00
daan
3526b09903 fix gcc warning 2019-06-23 18:37:54 -07:00
Daan Leijen
ef02104fd3 fix posix_memalign according to issue #27 2019-06-23 10:59:47 -07:00
Daan
fab7329c7a
Merge pull request #24 from jserv/clarify-license
Clarify top-level license file
2019-06-23 10:47:38 -07:00
Jim Huang
78c7a1f349 Fix typo in comments 2019-06-24 01:40:28 +08:00
Jim Huang
b1d299b35b Clarify top-level license file
To be consistent with other Microsoft open source projects, each source
file points to the file "LICENSE" in top-level directory.
2019-06-23 19:53:34 +08:00
Daan
06f8da4218
Merge pull request #15 from krytarowski/netbsd-1
Fix build on NetBSD
2019-06-22 21:04:15 -07:00
Kamil Rytarowski
b0b1b43dba Fix build on NetBSD
Add missing argument in mi_mmap()
2019-06-23 00:06:41 +02:00
Frank Denis
4d67e58e0f Fix mi_process_info placeholder prototype 2019-06-22 22:43:14 +02:00
Sungmann Cho
def97b0fd1 Fix spelling errors
aligment -> alignment
purgable -> purgeable
thead -> thread
2019-06-23 00:09:11 +09:00
daan
26a874eb3f initial checkin 2019-06-19 16:26:12 -07:00