Commit graph

52 commits

Author SHA1 Message Date
daan
f2e3cca213 fix build for missing malloc_good_size 2021-11-04 19:10:15 -07:00
Daan
c47de7eb90 improve macOS overriding 2021-11-04 18:55:12 -07:00
Daan
32ee13f41e improve macOS M1 performance; use interpose in combination with zone's; add -fno-builtin-malloc flag in building with MI_OVERRIDE 2021-11-02 21:54:44 -07:00
Daan Leijen
1b1c9186a4 suppress warning on discard attribute on forwards 2021-10-27 19:06:27 -07:00
David Carlier
898a23ec2b fixes malloc_usable_size signature on FreeBSD. 2021-10-22 08:12:14 +01:00
Daan
4d89176eb4 add MI_USE_LIBATOMIC to link with -latomic on older systems (see also PR #429); rename MI_INTERPOSE to MI_OSX_INTERPOSE 2021-10-20 09:35:58 -07:00
Daan Leijen
a83bca72b3 fixes for M1; disable interpose use zones; fix pedantic warnings 2021-06-17 19:15:09 -07:00
Daan Leijen
c8b5b74500 improve warnings 2021-06-07 17:51:27 -07:00
Daan
16b3329bd4
Merge pull request #396 from jserv/fix-copyright-date
Bump copyright date
2021-04-28 13:11:11 -07:00
Daan Leijen
aca46242ab update comment for aligned_alloc 2021-04-28 12:47:14 -07:00
Daan
45a8dc7f55
Merge pull request #385 from elbaro/fix/aligned-alloc
Fix aligned_alloc
2021-04-28 12:43:32 -07:00
Jim Huang
5940d3bcce Bump copyright date
Each source file has been changed according to relevant Git activities.
2021-04-24 16:35:11 +00:00
Jim Huang
3402c6cc3f Revise the use of macOS predefined macro
Quoted from "Porting UNIX/Linux Applications to OS X,"[1]
* macro __MACH__ is defined if Mach system calls are supported;
* macro __APPLE__ is defined in any Apple computer.

__MACH__ is not specific to macOS since GNU/Hurd runs on a Mach-based
microkernel (gnumach) [2]. __MACH__ is defined by the compiler,
leading to potential confusions. The solution is just changing the
checked identifier (i.e. __APPLE__), so it is really used only on
macOS.

[1] https://developer.apple.com/library/archive/documentation/Porting/Conceptual/PortingUnix/compiling/compiling.html
[2] https://www.gnu.org/software/hurd/microkernel/mach/gnumach.html
2021-04-21 15:24:02 +08:00
elbaro
ad44f76598 commit 2021-04-11 03:09:23 +09:00
Daan Leijen
bb386025b5 update override on macOS with interpose of malloc_default_zone (issues #313) 2020-12-15 16:03:54 -08:00
daan
5f51c97fbd override aligned_alloc always if using C compilation (issue #276) 2020-07-20 11:27:42 -07:00
Daan
81bd1b70b0
Merge pull request #238 from asl/gcc-6-aligned-dealloc
Fix override condition for sized dealloc with gcc 6
2020-05-01 14:16:20 -07:00
Anton Korobeynikov
0b440d9543 Apparently gcc 6 defines __cpp_aligned_new in C++14 mode, however no std::align_val_t is available there
for obvious reasons
2020-04-28 19:09:54 +03:00
Anton Korobeynikov
4a0c53ba5a Fix the prototype of malloc_size. Otherwise we'll end with invalid
redeclaration if malloc/malloc.h is pulled on Darwin
2020-04-21 15:07:32 +03:00
daan
77acf5a868 more careful overriding of aligned_alloc for compilation on Conda (#219) 2020-04-20 09:27:43 -07:00
daan
211038c4e5 (possible) fix for overriding of aligned_alloc on systems that define it as static inline. issue #219 2020-04-15 11:55:54 -07:00
David Carlier
6c5039bad1 Android build fix proposal.
malloc_usable_size has different signature on this platform.
thread and real time apis are part of bionic.
2020-04-14 14:20:56 +01:00
daan
9062f39764 enable interpose separate from zones on macOS 2020-02-08 20:08:52 -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
03b363a1c2 first working tls on macOS using interpose; still slow 2020-01-29 22:46:44 -08:00
daan
da709bcf11 test for gcc version for aligned new/delete overrides 2020-01-16 16:30:44 -08:00
daan
31726c6554 fix type; fix comment 2019-09-02 10:18:34 -07:00
daan
dd79b662f8 restore to old-style windows override; fix debug mode 2019-07-23 15:51:08 -07:00
daan
8dad858888 update to correct project settings for visual studio 2019-07-18 21:41:28 -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
461b8aed80 more complete C++ support for compliance and performance 2019-07-14 19:56:33 -07:00
daan
d656f3e339 merge with master 2019-07-08 15:45:37 -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
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
10a29f17c8 more conservative shrinking of memory 2019-07-02 22:49:12 -07:00
daan
5c0ffe9865 merge back changes to OS module from 'dev-exp' 2019-07-02 17:17:03 -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
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
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
36826a96c9 add power-of-two check to posix_memalign, pr #56 2019-06-27 13:29:00 -07: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
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