mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-05-08 00:09:31 +03:00
merge from dev
This commit is contained in:
commit
cbcee4dce4
4 changed files with 16 additions and 7 deletions
|
@ -26,6 +26,7 @@ option(MI_DEBUG_UBSAN "Build with undefined-behavior sanitizer (needs clan
|
||||||
option(MI_CHECK_FULL "Use full internal invariant checking in DEBUG mode (deprecated, use MI_DEBUG_FULL instead)" OFF)
|
option(MI_CHECK_FULL "Use full internal invariant checking in DEBUG mode (deprecated, use MI_DEBUG_FULL instead)" OFF)
|
||||||
option(MI_INSTALL_TOPLEVEL "Install directly into $CMAKE_INSTALL_PREFIX instead of PREFIX/lib/mimalloc-version (deprecated)" OFF)
|
option(MI_INSTALL_TOPLEVEL "Install directly into $CMAKE_INSTALL_PREFIX instead of PREFIX/lib/mimalloc-version (deprecated)" OFF)
|
||||||
option(MI_USE_LIBATOMIC "Explicitly link with -latomic (on older systems) (deprecated and detected automatically)" OFF)
|
option(MI_USE_LIBATOMIC "Explicitly link with -latomic (on older systems) (deprecated and detected automatically)" OFF)
|
||||||
|
option(MI_SKIP_COLLECT_ON_EXIT, "Skip collecting memory on exit" OFF)
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
include("cmake/mimalloc-config-version.cmake")
|
include("cmake/mimalloc-config-version.cmake")
|
||||||
|
@ -117,6 +118,10 @@ if(MI_CHECK_FULL)
|
||||||
set(MI_DEBUG_FULL "ON")
|
set(MI_DEBUG_FULL "ON")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (MI_SKIP_COLLECT_ON_EXIT)
|
||||||
|
list(APPEND mi_defines MI_SKIP_COLLECT_ON_EXIT=1)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(MI_DEBUG_FULL)
|
if(MI_DEBUG_FULL)
|
||||||
message(STATUS "Set debug level to full internal invariant checking (MI_DEBUG_FULL=ON)")
|
message(STATUS "Set debug level to full internal invariant checking (MI_DEBUG_FULL=ON)")
|
||||||
list(APPEND mi_defines MI_DEBUG=3) # full invariant checking
|
list(APPEND mi_defines MI_DEBUG=3) # full invariant checking
|
||||||
|
@ -310,6 +315,7 @@ if(MI_BUILD_SHARED)
|
||||||
add_custom_command(TARGET mimalloc POST_BUILD
|
add_custom_command(TARGET mimalloc POST_BUILD
|
||||||
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/bin/mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.dll" $<TARGET_FILE_DIR:mimalloc>
|
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/bin/mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.dll" $<TARGET_FILE_DIR:mimalloc>
|
||||||
COMMENT "Copy mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.dll to output directory")
|
COMMENT "Copy mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.dll to output directory")
|
||||||
|
install(FILES "$<TARGET_FILE_DIR:mimalloc>/mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.dll" DESTINATION ${mi_install_libdir})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
install(TARGETS mimalloc EXPORT mimalloc DESTINATION ${mi_install_libdir} LIBRARY)
|
install(TARGETS mimalloc EXPORT mimalloc DESTINATION ${mi_install_libdir} LIBRARY)
|
||||||
|
|
|
@ -812,6 +812,7 @@ static inline mi_threadid_t _mi_thread_id(void) mi_attr_noexcept {
|
||||||
|| (defined(__APPLE__) && (defined(__x86_64__) || defined(__aarch64__))) \
|
|| (defined(__APPLE__) && (defined(__x86_64__) || defined(__aarch64__))) \
|
||||||
|| (defined(__BIONIC__) && (defined(__x86_64__) || defined(__i386__) || defined(__arm__) || defined(__aarch64__))) \
|
|| (defined(__BIONIC__) && (defined(__x86_64__) || defined(__i386__) || defined(__arm__) || defined(__aarch64__))) \
|
||||||
|| (defined(__FreeBSD__) && (defined(__x86_64__) || defined(__i386__) || defined(__aarch64__))) \
|
|| (defined(__FreeBSD__) && (defined(__x86_64__) || defined(__i386__) || defined(__aarch64__))) \
|
||||||
|
|| (defined(__OpenBSD__) && (defined(__x86_64__) || defined(__i386__) || defined(__aarch64__))) \
|
||||||
)
|
)
|
||||||
|
|
||||||
static inline void* mi_tls_slot(size_t slot) mi_attr_noexcept {
|
static inline void* mi_tls_slot(size_t slot) mi_attr_noexcept {
|
||||||
|
|
|
@ -217,7 +217,7 @@ static malloc_zone_t mi_malloc_zone = {
|
||||||
.batch_free = &zone_batch_free,
|
.batch_free = &zone_batch_free,
|
||||||
.introspect = &mi_introspect,
|
.introspect = &mi_introspect,
|
||||||
#if defined(MAC_OS_X_VERSION_10_6) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
|
#if defined(MAC_OS_X_VERSION_10_6) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
|
||||||
#if defined(MAC_OS_X_VERSION_10_7) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7)
|
#if defined(MAC_OS_X_VERSION_10_14) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_14)
|
||||||
.version = 10,
|
.version = 10,
|
||||||
#else
|
#else
|
||||||
.version = 9,
|
.version = 9,
|
||||||
|
@ -226,7 +226,7 @@ static malloc_zone_t mi_malloc_zone = {
|
||||||
.memalign = &zone_memalign,
|
.memalign = &zone_memalign,
|
||||||
.free_definite_size = &zone_free_definite_size,
|
.free_definite_size = &zone_free_definite_size,
|
||||||
.pressure_relief = &zone_pressure_relief,
|
.pressure_relief = &zone_pressure_relief,
|
||||||
#if defined(MAC_OS_X_VERSION_10_7) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7)
|
#if defined(MAC_OS_X_VERSION_10_14) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_14)
|
||||||
.claimed_address = &zone_claimed_address,
|
.claimed_address = &zone_claimed_address,
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
|
|
12
src/init.c
12
src/init.c
|
@ -562,11 +562,13 @@ static void mi_process_done(void) {
|
||||||
FlsFree(mi_fls_key); // call thread-done on all threads (except the main thread) to prevent dangling callback pointer if statically linked with a DLL; Issue #208
|
FlsFree(mi_fls_key); // call thread-done on all threads (except the main thread) to prevent dangling callback pointer if statically linked with a DLL; Issue #208
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (MI_DEBUG != 0) || !defined(MI_SHARED_LIB)
|
#ifndef MI_SKIP_COLLECT_ON_EXIT
|
||||||
// free all memory if possible on process exit. This is not needed for a stand-alone process
|
#if (MI_DEBUG != 0) || !defined(MI_SHARED_LIB)
|
||||||
// but should be done if mimalloc is statically linked into another shared library which
|
// free all memory if possible on process exit. This is not needed for a stand-alone process
|
||||||
// is repeatedly loaded/unloaded, see issue #281.
|
// but should be done if mimalloc is statically linked into another shared library which
|
||||||
mi_collect(true /* force */ );
|
// is repeatedly loaded/unloaded, see issue #281.
|
||||||
|
mi_collect(true /* force */ );
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (mi_option_is_enabled(mi_option_show_stats) || mi_option_is_enabled(mi_option_verbose)) {
|
if (mi_option_is_enabled(mi_option_show_stats) || mi_option_is_enabled(mi_option_verbose)) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue