diff --git a/CMakeCache.txt b/CMakeCache.txt new file mode 100644 index 00000000..7a66d4bf --- /dev/null +++ b/CMakeCache.txt @@ -0,0 +1,440 @@ +# This is the CMakeCache file. +# For build in directory: /home/aprokurov/Projects/mimalloc +# It was generated by CMake: /usr/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=libmimalloc + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Path to a library. +LIBRT:FILEPATH=/usr/lib/librt.so + +//Build object library +MI_BUILD_OBJECT:BOOL=ON + +//Build shared library +MI_BUILD_SHARED:BOOL=ON + +//Build static library +MI_BUILD_STATIC:BOOL=ON + +//Build test executables +MI_BUILD_TESTS:BOOL=ON + +//Use full internal invariant checking in DEBUG mode (deprecated, +// use MI_DEBUG_FULL instead) +MI_CHECK_FULL:BOOL=OFF + +//Use full internal heap invariant checking in DEBUG mode (expensive) +MI_DEBUG_FULL:BOOL=OFF + +//Build with thread sanitizer (needs clang) +MI_DEBUG_TSAN:BOOL=OFF + +//Build with undefined-behavior sanitizer (needs clang++) +MI_DEBUG_UBSAN:BOOL=OFF + +//Install directly into $CMAKE_INSTALL_PREFIX instead of PREFIX/lib/mimalloc-version +MI_INSTALL_TOPLEVEL:BOOL=OFF + +//Use interpose to override standard malloc on macOS +MI_INTERPOSE:BOOL=ON + +//Use slightly slower, dlopen-compatible TLS mechanism (Unix) +MI_LOCAL_DYNAMIC_TLS:BOOL=OFF + +//Use malloc zone to override standard malloc on macOS +MI_OSX_ZONE:BOOL=OFF + +//Override the standard malloc interface (e.g. define entry points +// for malloc() etc) +MI_OVERRIDE:BOOL=ON + +//Enable padding to detect heap block overflow (used only in DEBUG +// mode) +MI_PADDING:BOOL=ON + +//Use full security mitigations (like guard pages, allocation randomization, +// double-free mitigation, and free-list corruption detection) +MI_SECURE:BOOL=OFF + +//Generate assembly files +MI_SEE_ASM:BOOL=OFF + +//Show error and warning messages by default (only enabled by default +// in DEBUG mode) +MI_SHOW_ERRORS:BOOL=OFF + +//Use the C++ compiler to compile the library (instead of the C +// compiler) +MI_USE_CXX:BOOL=OFF + +//Enable abort() call on memory allocation failure by default +MI_XMALLOC:BOOL=OFF + +//Value Computed by CMake +libmimalloc_BINARY_DIR:STATIC=/home/aprokurov/Projects/mimalloc + +//Value Computed by CMake +libmimalloc_SOURCE_DIR:STATIC=/home/aprokurov/Projects/mimalloc + +//Dependencies for the target +mimalloc-static_LIB_DEPENDS:STATIC=general;pthread;general;/usr/lib/librt.so; + +//Dependencies for the target +mimalloc_LIB_DEPENDS:STATIC=general;pthread;general;/usr/lib/librt.so; + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/aprokurov/Projects/mimalloc +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=19 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=4 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/usr/bin/ccmake +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/aprokurov/Projects/mimalloc +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.19 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/CMakeFiles/3.19.4/CMakeCCompiler.cmake b/CMakeFiles/3.19.4/CMakeCCompiler.cmake new file mode 100644 index 00000000..fbe5dfd1 --- /dev/null +++ b/CMakeFiles/3.19.4/CMakeCCompiler.cmake @@ -0,0 +1,77 @@ +set(CMAKE_C_COMPILER "/usr/bin/cc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "GNU") +set(CMAKE_C_COMPILER_VERSION "10.2.1") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_C_COMPILER_AR "/usr/bin/gcc-ar") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_C_COMPILER_RANLIB "/usr/bin/gcc-ranlib") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC 1) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include;/usr/local/include;/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include-fixed;/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "gcc;gcc_s;c;gcc;gcc_s") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1;/usr/lib64;/lib64") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/CMakeFiles/3.19.4/CMakeCXXCompiler.cmake b/CMakeFiles/3.19.4/CMakeCXXCompiler.cmake new file mode 100644 index 00000000..3963aa1b --- /dev/null +++ b/CMakeFiles/3.19.4/CMakeCXXCompiler.cmake @@ -0,0 +1,89 @@ +set(CMAKE_CXX_COMPILER "/usr/bin/c++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "GNU") +set(CMAKE_CXX_COMPILER_VERSION "10.2.1") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX 1) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/10.2.1;/usr/include/c++/10.2.1/x86_64-unknown-linux-gnu;/usr/include/c++/10.2.1/backward;/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include;/usr/local/include;/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include-fixed;/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1;/usr/lib64;/lib64") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/CMakeFiles/3.19.4/CMakeDetermineCompilerABI_C.bin b/CMakeFiles/3.19.4/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 00000000..a2cbb863 Binary files /dev/null and b/CMakeFiles/3.19.4/CMakeDetermineCompilerABI_C.bin differ diff --git a/CMakeFiles/3.19.4/CMakeDetermineCompilerABI_CXX.bin b/CMakeFiles/3.19.4/CMakeDetermineCompilerABI_CXX.bin new file mode 100755 index 00000000..e1906877 Binary files /dev/null and b/CMakeFiles/3.19.4/CMakeDetermineCompilerABI_CXX.bin differ diff --git a/CMakeFiles/3.19.4/CMakeSystem.cmake b/CMakeFiles/3.19.4/CMakeSystem.cmake new file mode 100644 index 00000000..8c83488d --- /dev/null +++ b/CMakeFiles/3.19.4/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-5.10.17_1") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "5.10.17_1") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-5.10.17_1") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "5.10.17_1") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/CMakeFiles/3.19.4/CompilerIdC/CMakeCCompilerId.c b/CMakeFiles/3.19.4/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 00000000..c126ec70 --- /dev/null +++ b/CMakeFiles/3.19.4/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,691 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(_CRAYC) || defined(__cray__) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if !defined(__STDC__) +# if (defined(_MSC_VER) && !defined(__clang__)) \ + || (defined(__ibmxl__) || defined(__IBMC__)) +# define C_DIALECT "90" +# else +# define C_DIALECT +# endif +#elif __STDC_VERSION__ >= 201000L +# define C_DIALECT "11" +#elif __STDC_VERSION__ >= 199901L +# define C_DIALECT "99" +#else +# define C_DIALECT "90" +#endif +const char* info_language_dialect_default = + "INFO" ":" "dialect_default[" C_DIALECT "]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(_CRAYC) || defined(__cray__) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/CMakeFiles/3.19.4/CompilerIdC/a.out b/CMakeFiles/3.19.4/CompilerIdC/a.out new file mode 100755 index 00000000..604f1101 Binary files /dev/null and b/CMakeFiles/3.19.4/CompilerIdC/a.out differ diff --git a/CMakeFiles/3.19.4/CompilerIdCXX/CMakeCXXCompilerId.cpp b/CMakeFiles/3.19.4/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 00000000..0c63d62d --- /dev/null +++ b/CMakeFiles/3.19.4/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,680 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(_CRAYC) || defined(__cray__) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_dialect_default = "INFO" ":" "dialect_default[" +#if CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(_CRAYC) || defined(__cray__) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} diff --git a/CMakeFiles/3.19.4/CompilerIdCXX/a.out b/CMakeFiles/3.19.4/CompilerIdCXX/a.out new file mode 100755 index 00000000..42e70fc7 Binary files /dev/null and b/CMakeFiles/3.19.4/CompilerIdCXX/a.out differ diff --git a/CMakeFiles/CMakeDirectoryInformation.cmake b/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 00000000..821663a4 --- /dev/null +++ b/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/aprokurov/Projects/mimalloc") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/aprokurov/Projects/mimalloc") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/CMakeFiles/CMakeOutput.log b/CMakeFiles/CMakeOutput.log new file mode 100644 index 00000000..f6f8c44a --- /dev/null +++ b/CMakeFiles/CMakeOutput.log @@ -0,0 +1,399 @@ +The system is: Linux - 5.10.17_1 - x86_64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: /usr/bin/cc +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" + +The C compiler identification is GNU, found in "/home/aprokurov/Projects/mimalloc/CMakeFiles/3.19.4/CompilerIdC/a.out" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: /usr/bin/c++ +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" + +The CXX compiler identification is GNU, found in "/home/aprokurov/Projects/mimalloc/CMakeFiles/3.19.4/CompilerIdCXX/a.out" + +Detecting C compiler ABI info compiled with the following output: +Change Dir: /home/aprokurov/Projects/mimalloc/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_25d60/fast && /usr/bin/make -f CMakeFiles/cmTC_25d60.dir/build.make CMakeFiles/cmTC_25d60.dir/build +make[1]: Entering directory '/home/aprokurov/Projects/mimalloc/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o +/usr/bin/cc -v -o CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.19/Modules/CMakeCCompilerABI.c +Using built-in specs. +COLLECT_GCC=/usr/bin/cc +Target: x86_64-unknown-linux-gnu +Configured with: /builddir/gcc-10.2.1_pre1/configure --build=x86_64-unknown-linux-gnu --enable-gnu-unique-object --enable-vtable-verify --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --libexecdir=/usr/lib64 --libdir=/usr/lib64 --enable-threads=posix --enable-__cxa_atexit --disable-multilib --with-system-zlib --enable-shared --enable-lto --enable-plugins --enable-linker-build-id --disable-werror --disable-nls --enable-default-pie --enable-default-ssp --enable-checking=release --disable-libstdcxx-pch --with-isl --with-linker-hash-style=gnu --disable-sjlj-exceptions --disable-target-libiberty --enable-languages=c,c++,objc,obj-c++,fortran,lto,go,ada +Thread model: posix +Supported LTO compression algorithms: zlib +gcc version 10.2.1 20201203 (GCC) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' + /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/cc1 -quiet -v /usr/share/cmake-3.19/Modules/CMakeCCompilerABI.c -quiet -dumpbase CMakeCCompilerABI.c -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o -version -o /tmp/cc2ENoAb.s +GNU C17 (GCC) version 10.2.1 20201203 (x86_64-unknown-linux-gnu) + compiled by GNU C version 10.2.1 20201203, GMP version 6.2.0, MPFR version 4.1.0, MPC version 1.1.0, isl version isl-0.21-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring nonexistent directory "/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../x86_64-unknown-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include + /usr/local/include + /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include-fixed + /usr/include +End of search list. +GNU C17 (GCC) version 10.2.1 20201203 (x86_64-unknown-linux-gnu) + compiled by GNU C version 10.2.1 20201203, GMP version 6.2.0, MPFR version 4.1.0, MPC version 1.1.0, isl version isl-0.21-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: cd9b8a2d760c33d69d07511fa88cb109 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o /tmp/cc2ENoAb.s +GNU assembler version 2.35.1 (x86_64-unknown-linux-gnu) using BFD version (GNU Binutils) 2.35.1 +COMPILER_PATH=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/ +LIBRARY_PATH=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' +Linking C executable cmTC_25d60 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_25d60.dir/link.txt --verbose=1 +/usr/bin/cc -v -rdynamic CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o -o cmTC_25d60 +Using built-in specs. +COLLECT_GCC=/usr/bin/cc +COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/lto-wrapper +Target: x86_64-unknown-linux-gnu +Configured with: /builddir/gcc-10.2.1_pre1/configure --build=x86_64-unknown-linux-gnu --enable-gnu-unique-object --enable-vtable-verify --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --libexecdir=/usr/lib64 --libdir=/usr/lib64 --enable-threads=posix --enable-__cxa_atexit --disable-multilib --with-system-zlib --enable-shared --enable-lto --enable-plugins --enable-linker-build-id --disable-werror --disable-nls --enable-default-pie --enable-default-ssp --enable-checking=release --disable-libstdcxx-pch --with-isl --with-linker-hash-style=gnu --disable-sjlj-exceptions --disable-target-libiberty --enable-languages=c,c++,objc,obj-c++,fortran,lto,go,ada +Thread model: posix +Supported LTO compression algorithms: zlib +gcc version 10.2.1 20201203 (GCC) +COMPILER_PATH=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/ +LIBRARY_PATH=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_25d60' '-mtune=generic' '-march=x86-64' + /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/collect2 -plugin /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/liblto_plugin.so -plugin-opt=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccVdvJVG.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_25d60 /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/Scrt1.o /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/crti.o /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/crtbeginS.o -L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1 -L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../.. CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/crtendS.o /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/crtn.o +COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_25d60' '-mtune=generic' '-march=x86-64' +make[1]: Leaving directory '/home/aprokurov/Projects/mimalloc/CMakeFiles/CMakeTmp' + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include] + add: [/usr/local/include] + add: [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include-fixed] + add: [/usr/include] + end of search list found + collapse include dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include] ==> [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include-fixed] ==> [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include-fixed] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include;/usr/local/include;/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include-fixed;/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/aprokurov/Projects/mimalloc/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/bin/make cmTC_25d60/fast && /usr/bin/make -f CMakeFiles/cmTC_25d60.dir/build.make CMakeFiles/cmTC_25d60.dir/build] + ignore line: [make[1]: Entering directory '/home/aprokurov/Projects/mimalloc/CMakeFiles/CMakeTmp'] + ignore line: [Building C object CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o] + ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.19/Modules/CMakeCCompilerABI.c] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [Target: x86_64-unknown-linux-gnu] + ignore line: [Configured with: /builddir/gcc-10.2.1_pre1/configure --build=x86_64-unknown-linux-gnu --enable-gnu-unique-object --enable-vtable-verify --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --libexecdir=/usr/lib64 --libdir=/usr/lib64 --enable-threads=posix --enable-__cxa_atexit --disable-multilib --with-system-zlib --enable-shared --enable-lto --enable-plugins --enable-linker-build-id --disable-werror --disable-nls --enable-default-pie --enable-default-ssp --enable-checking=release --disable-libstdcxx-pch --with-isl --with-linker-hash-style=gnu --disable-sjlj-exceptions --disable-target-libiberty --enable-languages=c c++ objc obj-c++ fortran lto go ada] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib] + ignore line: [gcc version 10.2.1 20201203 (GCC) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/cc1 -quiet -v /usr/share/cmake-3.19/Modules/CMakeCCompilerABI.c -quiet -dumpbase CMakeCCompilerABI.c -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o -version -o /tmp/cc2ENoAb.s] + ignore line: [GNU C17 (GCC) version 10.2.1 20201203 (x86_64-unknown-linux-gnu)] + ignore line: [ compiled by GNU C version 10.2.1 20201203 GMP version 6.2.0 MPFR version 4.1.0 MPC version 1.1.0 isl version isl-0.21-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring nonexistent directory "/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../x86_64-unknown-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include-fixed] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C17 (GCC) version 10.2.1 20201203 (x86_64-unknown-linux-gnu)] + ignore line: [ compiled by GNU C version 10.2.1 20201203 GMP version 6.2.0 MPFR version 4.1.0 MPC version 1.1.0 isl version isl-0.21-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: cd9b8a2d760c33d69d07511fa88cb109] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o /tmp/cc2ENoAb.s] + ignore line: [GNU assembler version 2.35.1 (x86_64-unknown-linux-gnu) using BFD version (GNU Binutils) 2.35.1] + ignore line: [COMPILER_PATH=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64'] + ignore line: [Linking C executable cmTC_25d60] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_25d60.dir/link.txt --verbose=1] + ignore line: [/usr/bin/cc -v -rdynamic CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o -o cmTC_25d60 ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/lto-wrapper] + ignore line: [Target: x86_64-unknown-linux-gnu] + ignore line: [Configured with: /builddir/gcc-10.2.1_pre1/configure --build=x86_64-unknown-linux-gnu --enable-gnu-unique-object --enable-vtable-verify --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --libexecdir=/usr/lib64 --libdir=/usr/lib64 --enable-threads=posix --enable-__cxa_atexit --disable-multilib --with-system-zlib --enable-shared --enable-lto --enable-plugins --enable-linker-build-id --disable-werror --disable-nls --enable-default-pie --enable-default-ssp --enable-checking=release --disable-libstdcxx-pch --with-isl --with-linker-hash-style=gnu --disable-sjlj-exceptions --disable-target-libiberty --enable-languages=c c++ objc obj-c++ fortran lto go ada] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib] + ignore line: [gcc version 10.2.1 20201203 (GCC) ] + ignore line: [COMPILER_PATH=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_25d60' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/collect2 -plugin /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/liblto_plugin.so -plugin-opt=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccVdvJVG.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_25d60 /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/Scrt1.o /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/crti.o /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/crtbeginS.o -L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1 -L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../.. CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/crtendS.o /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/crtn.o] + arg [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccVdvJVG.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [-export-dynamic] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-o] ==> ignore + arg [cmTC_25d60] ==> ignore + arg [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/Scrt1.o] ==> ignore + arg [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/crti.o] ==> ignore + arg [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/crtbeginS.o] ==> ignore + arg [-L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1] ==> dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1] + arg [-L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64] ==> dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64] + arg [-L/lib/../lib64] ==> dir [/lib/../lib64] + arg [-L/usr/lib/../lib64] ==> dir [/usr/lib/../lib64] + arg [-L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../..] ==> dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../..] + arg [CMakeFiles/cmTC_25d60.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lgcc] ==> lib [gcc] + arg [--push-state] ==> ignore + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--pop-state] ==> ignore + arg [-lc] ==> lib [c] + arg [-lgcc] ==> lib [gcc] + arg [--push-state] ==> ignore + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--pop-state] ==> ignore + arg [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/crtendS.o] ==> ignore + arg [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/crtn.o] ==> ignore + collapse library dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1] ==> [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1] + collapse library dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64] ==> [/usr/lib64] + collapse library dir [/lib/../lib64] ==> [/lib64] + collapse library dir [/usr/lib/../lib64] ==> [/usr/lib64] + collapse library dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../..] ==> [/usr/lib64] + implicit libs: [gcc;gcc_s;c;gcc;gcc_s] + implicit dirs: [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1;/usr/lib64;/lib64] + implicit fwks: [] + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/aprokurov/Projects/mimalloc/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_eaf73/fast && /usr/bin/make -f CMakeFiles/cmTC_eaf73.dir/build.make CMakeFiles/cmTC_eaf73.dir/build +make[1]: Entering directory '/home/aprokurov/Projects/mimalloc/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o +/usr/bin/c++ -v -o CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.19/Modules/CMakeCXXCompilerABI.cpp +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +Target: x86_64-unknown-linux-gnu +Configured with: /builddir/gcc-10.2.1_pre1/configure --build=x86_64-unknown-linux-gnu --enable-gnu-unique-object --enable-vtable-verify --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --libexecdir=/usr/lib64 --libdir=/usr/lib64 --enable-threads=posix --enable-__cxa_atexit --disable-multilib --with-system-zlib --enable-shared --enable-lto --enable-plugins --enable-linker-build-id --disable-werror --disable-nls --enable-default-pie --enable-default-ssp --enable-checking=release --disable-libstdcxx-pch --with-isl --with-linker-hash-style=gnu --disable-sjlj-exceptions --disable-target-libiberty --enable-languages=c,c++,objc,obj-c++,fortran,lto,go,ada +Thread model: posix +Supported LTO compression algorithms: zlib +gcc version 10.2.1 20201203 (GCC) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake-3.19/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o -version -o /tmp/ccYJGOzc.s +GNU C++14 (GCC) version 10.2.1 20201203 (x86_64-unknown-linux-gnu) + compiled by GNU C version 10.2.1 20201203, GMP version 6.2.0, MPFR version 4.1.0, MPC version 1.1.0, isl version isl-0.21-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring nonexistent directory "/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../x86_64-unknown-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../include/c++/10.2.1 + /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../include/c++/10.2.1/x86_64-unknown-linux-gnu + /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../include/c++/10.2.1/backward + /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include + /usr/local/include + /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include-fixed + /usr/include +End of search list. +GNU C++14 (GCC) version 10.2.1 20201203 (x86_64-unknown-linux-gnu) + compiled by GNU C version 10.2.1 20201203, GMP version 6.2.0, MPFR version 4.1.0, MPC version 1.1.0, isl version isl-0.21-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: 9ae8d70a088aeda1fc99eee36a345833 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccYJGOzc.s +GNU assembler version 2.35.1 (x86_64-unknown-linux-gnu) using BFD version (GNU Binutils) 2.35.1 +COMPILER_PATH=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/ +LIBRARY_PATH=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +Linking CXX executable cmTC_eaf73 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_eaf73.dir/link.txt --verbose=1 +/usr/bin/c++ -v -rdynamic CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_eaf73 +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/lto-wrapper +Target: x86_64-unknown-linux-gnu +Configured with: /builddir/gcc-10.2.1_pre1/configure --build=x86_64-unknown-linux-gnu --enable-gnu-unique-object --enable-vtable-verify --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --libexecdir=/usr/lib64 --libdir=/usr/lib64 --enable-threads=posix --enable-__cxa_atexit --disable-multilib --with-system-zlib --enable-shared --enable-lto --enable-plugins --enable-linker-build-id --disable-werror --disable-nls --enable-default-pie --enable-default-ssp --enable-checking=release --disable-libstdcxx-pch --with-isl --with-linker-hash-style=gnu --disable-sjlj-exceptions --disable-target-libiberty --enable-languages=c,c++,objc,obj-c++,fortran,lto,go,ada +Thread model: posix +Supported LTO compression algorithms: zlib +gcc version 10.2.1 20201203 (GCC) +COMPILER_PATH=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/ +LIBRARY_PATH=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_eaf73' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/collect2 -plugin /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/liblto_plugin.so -plugin-opt=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccb44B8E.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_eaf73 /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/Scrt1.o /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/crti.o /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/crtbeginS.o -L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1 -L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../.. CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/crtendS.o /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/crtn.o +COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_eaf73' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +make[1]: Leaving directory '/home/aprokurov/Projects/mimalloc/CMakeFiles/CMakeTmp' + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../include/c++/10.2.1] + add: [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../include/c++/10.2.1/x86_64-unknown-linux-gnu] + add: [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../include/c++/10.2.1/backward] + add: [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include] + add: [/usr/local/include] + add: [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include-fixed] + add: [/usr/include] + end of search list found + collapse include dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../include/c++/10.2.1] ==> [/usr/include/c++/10.2.1] + collapse include dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../include/c++/10.2.1/x86_64-unknown-linux-gnu] ==> [/usr/include/c++/10.2.1/x86_64-unknown-linux-gnu] + collapse include dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../include/c++/10.2.1/backward] ==> [/usr/include/c++/10.2.1/backward] + collapse include dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include] ==> [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include-fixed] ==> [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include-fixed] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/include/c++/10.2.1;/usr/include/c++/10.2.1/x86_64-unknown-linux-gnu;/usr/include/c++/10.2.1/backward;/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include;/usr/local/include;/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include-fixed;/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/aprokurov/Projects/mimalloc/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/bin/make cmTC_eaf73/fast && /usr/bin/make -f CMakeFiles/cmTC_eaf73.dir/build.make CMakeFiles/cmTC_eaf73.dir/build] + ignore line: [make[1]: Entering directory '/home/aprokurov/Projects/mimalloc/CMakeFiles/CMakeTmp'] + ignore line: [Building CXX object CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.19/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [Target: x86_64-unknown-linux-gnu] + ignore line: [Configured with: /builddir/gcc-10.2.1_pre1/configure --build=x86_64-unknown-linux-gnu --enable-gnu-unique-object --enable-vtable-verify --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --libexecdir=/usr/lib64 --libdir=/usr/lib64 --enable-threads=posix --enable-__cxa_atexit --disable-multilib --with-system-zlib --enable-shared --enable-lto --enable-plugins --enable-linker-build-id --disable-werror --disable-nls --enable-default-pie --enable-default-ssp --enable-checking=release --disable-libstdcxx-pch --with-isl --with-linker-hash-style=gnu --disable-sjlj-exceptions --disable-target-libiberty --enable-languages=c c++ objc obj-c++ fortran lto go ada] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib] + ignore line: [gcc version 10.2.1 20201203 (GCC) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake-3.19/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o -version -o /tmp/ccYJGOzc.s] + ignore line: [GNU C++14 (GCC) version 10.2.1 20201203 (x86_64-unknown-linux-gnu)] + ignore line: [ compiled by GNU C version 10.2.1 20201203 GMP version 6.2.0 MPFR version 4.1.0 MPC version 1.1.0 isl version isl-0.21-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring nonexistent directory "/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../x86_64-unknown-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../include/c++/10.2.1] + ignore line: [ /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../include/c++/10.2.1/x86_64-unknown-linux-gnu] + ignore line: [ /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../include/c++/10.2.1/backward] + ignore line: [ /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/include-fixed] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C++14 (GCC) version 10.2.1 20201203 (x86_64-unknown-linux-gnu)] + ignore line: [ compiled by GNU C version 10.2.1 20201203 GMP version 6.2.0 MPFR version 4.1.0 MPC version 1.1.0 isl version isl-0.21-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: 9ae8d70a088aeda1fc99eee36a345833] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccYJGOzc.s] + ignore line: [GNU assembler version 2.35.1 (x86_64-unknown-linux-gnu) using BFD version (GNU Binutils) 2.35.1] + ignore line: [COMPILER_PATH=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [Linking CXX executable cmTC_eaf73] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_eaf73.dir/link.txt --verbose=1] + ignore line: [/usr/bin/c++ -v -rdynamic CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_eaf73 ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/lto-wrapper] + ignore line: [Target: x86_64-unknown-linux-gnu] + ignore line: [Configured with: /builddir/gcc-10.2.1_pre1/configure --build=x86_64-unknown-linux-gnu --enable-gnu-unique-object --enable-vtable-verify --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --libexecdir=/usr/lib64 --libdir=/usr/lib64 --enable-threads=posix --enable-__cxa_atexit --disable-multilib --with-system-zlib --enable-shared --enable-lto --enable-plugins --enable-linker-build-id --disable-werror --disable-nls --enable-default-pie --enable-default-ssp --enable-checking=release --disable-libstdcxx-pch --with-isl --with-linker-hash-style=gnu --disable-sjlj-exceptions --disable-target-libiberty --enable-languages=c c++ objc obj-c++ fortran lto go ada] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib] + ignore line: [gcc version 10.2.1 20201203 (GCC) ] + ignore line: [COMPILER_PATH=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_eaf73' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/collect2 -plugin /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/liblto_plugin.so -plugin-opt=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccb44B8E.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_eaf73 /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/Scrt1.o /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/crti.o /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/crtbeginS.o -L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1 -L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../.. CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/crtendS.o /usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/crtn.o] + arg [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccb44B8E.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [-export-dynamic] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-o] ==> ignore + arg [cmTC_eaf73] ==> ignore + arg [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/Scrt1.o] ==> ignore + arg [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/crti.o] ==> ignore + arg [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/crtbeginS.o] ==> ignore + arg [-L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1] ==> dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1] + arg [-L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64] ==> dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64] + arg [-L/lib/../lib64] ==> dir [/lib/../lib64] + arg [-L/usr/lib/../lib64] ==> dir [/usr/lib/../lib64] + arg [-L/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../..] ==> dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../..] + arg [CMakeFiles/cmTC_eaf73.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/crtendS.o] ==> ignore + arg [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64/crtn.o] ==> ignore + collapse library dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1] ==> [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1] + collapse library dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../../../lib64] ==> [/usr/lib64] + collapse library dir [/lib/../lib64] ==> [/lib64] + collapse library dir [/usr/lib/../lib64] ==> [/usr/lib64] + collapse library dir [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1/../../..] ==> [/usr/lib64] + implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit dirs: [/usr/lib64/gcc/x86_64-unknown-linux-gnu/10.2.1;/usr/lib64;/lib64] + implicit fwks: [] + + diff --git a/CMakeFiles/Export/_usr/local/lib/mimalloc-1.7/cmake/mimalloc-release.cmake b/CMakeFiles/Export/_usr/local/lib/mimalloc-1.7/cmake/mimalloc-release.cmake new file mode 100644 index 00000000..663e1712 --- /dev/null +++ b/CMakeFiles/Export/_usr/local/lib/mimalloc-1.7/cmake/mimalloc-release.cmake @@ -0,0 +1,29 @@ +#---------------------------------------------------------------- +# Generated CMake target import file for configuration "Release". +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Import target "mimalloc" for configuration "Release" +set_property(TARGET mimalloc APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_target_properties(mimalloc PROPERTIES + IMPORTED_LOCATION_RELEASE "/usr/local/lib/mimalloc-1.7/libmimalloc.so.1.7" + IMPORTED_SONAME_RELEASE "libmimalloc.so.1.7" + ) + +list(APPEND _IMPORT_CHECK_TARGETS mimalloc ) +list(APPEND _IMPORT_CHECK_FILES_FOR_mimalloc "/usr/local/lib/mimalloc-1.7/libmimalloc.so.1.7" ) + +# Import target "mimalloc-static" for configuration "Release" +set_property(TARGET mimalloc-static APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_target_properties(mimalloc-static PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C" + IMPORTED_LOCATION_RELEASE "/usr/local/lib/mimalloc-1.7/libmimalloc.a" + ) + +list(APPEND _IMPORT_CHECK_TARGETS mimalloc-static ) +list(APPEND _IMPORT_CHECK_FILES_FOR_mimalloc-static "/usr/local/lib/mimalloc-1.7/libmimalloc.a" ) + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) diff --git a/CMakeFiles/Export/_usr/local/lib/mimalloc-1.7/cmake/mimalloc.cmake b/CMakeFiles/Export/_usr/local/lib/mimalloc-1.7/cmake/mimalloc.cmake new file mode 100644 index 00000000..69934a6f --- /dev/null +++ b/CMakeFiles/Export/_usr/local/lib/mimalloc-1.7/cmake/mimalloc.cmake @@ -0,0 +1,101 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) + message(FATAL_ERROR "CMake >= 2.6.0 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.6...3.17) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_targetsDefined) +set(_targetsNotDefined) +set(_expectedTargets) +foreach(_expectedTarget mimalloc mimalloc-static) + list(APPEND _expectedTargets ${_expectedTarget}) + if(NOT TARGET ${_expectedTarget}) + list(APPEND _targetsNotDefined ${_expectedTarget}) + endif() + if(TARGET ${_expectedTarget}) + list(APPEND _targetsDefined ${_expectedTarget}) + endif() +endforeach() +if("${_targetsDefined}" STREQUAL "${_expectedTargets}") + unset(_targetsDefined) + unset(_targetsNotDefined) + unset(_expectedTargets) + set(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT "${_targetsDefined}" STREQUAL "") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") +endif() +unset(_targetsDefined) +unset(_targetsNotDefined) +unset(_expectedTargets) + + +# The installation prefix configured by this project. +set(_IMPORT_PREFIX "/usr/local") + +# Create imported target mimalloc +add_library(mimalloc SHARED IMPORTED) + +set_target_properties(mimalloc PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "/usr/local/lib/mimalloc-1.7/include" + INTERFACE_LINK_LIBRARIES "pthread;/usr/lib/librt.so" +) + +# Create imported target mimalloc-static +add_library(mimalloc-static STATIC IMPORTED) + +set_target_properties(mimalloc-static PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "/usr/local/lib/mimalloc-1.7/include" + INTERFACE_LINK_LIBRARIES "pthread;/usr/lib/librt.so" +) + +if(CMAKE_VERSION VERSION_LESS 2.8.12) + message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") +endif() + +# Load information for each installed configuration. +get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +file(GLOB CONFIG_FILES "${_DIR}/mimalloc-*.cmake") +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(target ${_IMPORT_CHECK_TARGETS} ) + foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) + if(NOT EXISTS "${file}" ) + message(FATAL_ERROR "The imported target \"${target}\" references the file + \"${file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + unset(_IMPORT_CHECK_FILES_FOR_${target}) +endforeach() +unset(_IMPORT_CHECK_TARGETS) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/CMakeFiles/Makefile.cmake b/CMakeFiles/Makefile.cmake new file mode 100644 index 00000000..f7b6e285 --- /dev/null +++ b/CMakeFiles/Makefile.cmake @@ -0,0 +1,52 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "CMakeFiles/3.19.4/CMakeCCompiler.cmake" + "CMakeFiles/3.19.4/CMakeCXXCompiler.cmake" + "CMakeFiles/3.19.4/CMakeSystem.cmake" + "CMakeLists.txt" + "cmake/mimalloc-config-version.cmake" + "/usr/share/cmake-3.19/Modules/CMakeCInformation.cmake" + "/usr/share/cmake-3.19/Modules/CMakeCXXInformation.cmake" + "/usr/share/cmake-3.19/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/share/cmake-3.19/Modules/CMakeGenericSystem.cmake" + "/usr/share/cmake-3.19/Modules/CMakeInitializeConfigs.cmake" + "/usr/share/cmake-3.19/Modules/CMakeLanguageInformation.cmake" + "/usr/share/cmake-3.19/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/share/cmake-3.19/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/share/cmake-3.19/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/share/cmake-3.19/Modules/Compiler/GNU-C.cmake" + "/usr/share/cmake-3.19/Modules/Compiler/GNU-CXX.cmake" + "/usr/share/cmake-3.19/Modules/Compiler/GNU.cmake" + "/usr/share/cmake-3.19/Modules/Platform/Linux-GNU-C.cmake" + "/usr/share/cmake-3.19/Modules/Platform/Linux-GNU-CXX.cmake" + "/usr/share/cmake-3.19/Modules/Platform/Linux-GNU.cmake" + "/usr/share/cmake-3.19/Modules/Platform/Linux.cmake" + "/usr/share/cmake-3.19/Modules/Platform/UnixPaths.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/mimalloc-test-stress.dir/DependInfo.cmake" + "CMakeFiles/mimalloc-obj.dir/DependInfo.cmake" + "CMakeFiles/mimalloc-static.dir/DependInfo.cmake" + "CMakeFiles/mimalloc-test-api.dir/DependInfo.cmake" + "CMakeFiles/mimalloc.dir/DependInfo.cmake" + ) diff --git a/CMakeFiles/Makefile2 b/CMakeFiles/Makefile2 new file mode 100644 index 00000000..d911962e --- /dev/null +++ b/CMakeFiles/Makefile2 @@ -0,0 +1,241 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/aprokurov/Projects/mimalloc + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/aprokurov/Projects/mimalloc + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: CMakeFiles/mimalloc-test-stress.dir/all +all: CMakeFiles/mimalloc-obj.dir/all +all: CMakeFiles/mimalloc-static.dir/all +all: CMakeFiles/mimalloc-test-api.dir/all +all: CMakeFiles/mimalloc.dir/all + +.PHONY : all + +# The main recursive "preinstall" target. +preinstall: + +.PHONY : preinstall + +# The main recursive "clean" target. +clean: CMakeFiles/mimalloc-test-stress.dir/clean +clean: CMakeFiles/mimalloc-obj.dir/clean +clean: CMakeFiles/mimalloc-static.dir/clean +clean: CMakeFiles/mimalloc-test-api.dir/clean +clean: CMakeFiles/mimalloc.dir/clean + +.PHONY : clean + +#============================================================================= +# Target rules for target CMakeFiles/mimalloc-test-stress.dir + +# All Build rule for target. +CMakeFiles/mimalloc-test-stress.dir/all: CMakeFiles/mimalloc.dir/all + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-test-stress.dir/build.make CMakeFiles/mimalloc-test-stress.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-test-stress.dir/build.make CMakeFiles/mimalloc-test-stress.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=34,35 "Built target mimalloc-test-stress" +.PHONY : CMakeFiles/mimalloc-test-stress.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/mimalloc-test-stress.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/aprokurov/Projects/mimalloc/CMakeFiles 17 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/mimalloc-test-stress.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/aprokurov/Projects/mimalloc/CMakeFiles 0 +.PHONY : CMakeFiles/mimalloc-test-stress.dir/rule + +# Convenience name for target. +mimalloc-test-stress: CMakeFiles/mimalloc-test-stress.dir/rule + +.PHONY : mimalloc-test-stress + +# clean rule for target. +CMakeFiles/mimalloc-test-stress.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-test-stress.dir/build.make CMakeFiles/mimalloc-test-stress.dir/clean +.PHONY : CMakeFiles/mimalloc-test-stress.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/mimalloc-obj.dir + +# All Build rule for target. +CMakeFiles/mimalloc-obj.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-obj.dir/build.make CMakeFiles/mimalloc-obj.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-obj.dir/build.make CMakeFiles/mimalloc-obj.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=16 "Built target mimalloc-obj" +.PHONY : CMakeFiles/mimalloc-obj.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/mimalloc-obj.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/aprokurov/Projects/mimalloc/CMakeFiles 1 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/mimalloc-obj.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/aprokurov/Projects/mimalloc/CMakeFiles 0 +.PHONY : CMakeFiles/mimalloc-obj.dir/rule + +# Convenience name for target. +mimalloc-obj: CMakeFiles/mimalloc-obj.dir/rule + +.PHONY : mimalloc-obj + +# clean rule for target. +CMakeFiles/mimalloc-obj.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-obj.dir/build.make CMakeFiles/mimalloc-obj.dir/clean +.PHONY : CMakeFiles/mimalloc-obj.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/mimalloc-static.dir + +# All Build rule for target. +CMakeFiles/mimalloc-static.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 "Built target mimalloc-static" +.PHONY : CMakeFiles/mimalloc-static.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/mimalloc-static.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/aprokurov/Projects/mimalloc/CMakeFiles 15 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/mimalloc-static.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/aprokurov/Projects/mimalloc/CMakeFiles 0 +.PHONY : CMakeFiles/mimalloc-static.dir/rule + +# Convenience name for target. +mimalloc-static: CMakeFiles/mimalloc-static.dir/rule + +.PHONY : mimalloc-static + +# clean rule for target. +CMakeFiles/mimalloc-static.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/clean +.PHONY : CMakeFiles/mimalloc-static.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/mimalloc-test-api.dir + +# All Build rule for target. +CMakeFiles/mimalloc-test-api.dir/all: CMakeFiles/mimalloc-static.dir/all + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-test-api.dir/build.make CMakeFiles/mimalloc-test-api.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-test-api.dir/build.make CMakeFiles/mimalloc-test-api.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=32,33 "Built target mimalloc-test-api" +.PHONY : CMakeFiles/mimalloc-test-api.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/mimalloc-test-api.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/aprokurov/Projects/mimalloc/CMakeFiles 17 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/mimalloc-test-api.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/aprokurov/Projects/mimalloc/CMakeFiles 0 +.PHONY : CMakeFiles/mimalloc-test-api.dir/rule + +# Convenience name for target. +mimalloc-test-api: CMakeFiles/mimalloc-test-api.dir/rule + +.PHONY : mimalloc-test-api + +# clean rule for target. +CMakeFiles/mimalloc-test-api.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-test-api.dir/build.make CMakeFiles/mimalloc-test-api.dir/clean +.PHONY : CMakeFiles/mimalloc-test-api.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/mimalloc.dir + +# All Build rule for target. +CMakeFiles/mimalloc.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 "Built target mimalloc" +.PHONY : CMakeFiles/mimalloc.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/mimalloc.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/aprokurov/Projects/mimalloc/CMakeFiles 15 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/mimalloc.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/aprokurov/Projects/mimalloc/CMakeFiles 0 +.PHONY : CMakeFiles/mimalloc.dir/rule + +# Convenience name for target. +mimalloc: CMakeFiles/mimalloc.dir/rule + +.PHONY : mimalloc + +# clean rule for target. +CMakeFiles/mimalloc.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/clean +.PHONY : CMakeFiles/mimalloc.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/CMakeFiles/TargetDirectories.txt b/CMakeFiles/TargetDirectories.txt new file mode 100644 index 00000000..36ace24b --- /dev/null +++ b/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,12 @@ +/home/aprokurov/Projects/mimalloc/CMakeFiles/install/local.dir +/home/aprokurov/Projects/mimalloc/CMakeFiles/install.dir +/home/aprokurov/Projects/mimalloc/CMakeFiles/list_install_components.dir +/home/aprokurov/Projects/mimalloc/CMakeFiles/rebuild_cache.dir +/home/aprokurov/Projects/mimalloc/CMakeFiles/edit_cache.dir +/home/aprokurov/Projects/mimalloc/CMakeFiles/test.dir +/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-test-stress.dir +/home/aprokurov/Projects/mimalloc/CMakeFiles/install/strip.dir +/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-obj.dir +/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir +/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-test-api.dir +/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir diff --git a/CMakeFiles/cmake.check_cache b/CMakeFiles/cmake.check_cache new file mode 100644 index 00000000..3dccd731 --- /dev/null +++ b/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/CMakeFiles/mimalloc-obj.dir/C.includecache b/CMakeFiles/mimalloc-obj.dir/C.includecache new file mode 100644 index 00000000..9786d7f0 --- /dev/null +++ b/CMakeFiles/mimalloc-obj.dir/C.includecache @@ -0,0 +1,374 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/home/aprokurov/Projects/mimalloc/src/alloc-aligned.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +string.h +- + +/home/aprokurov/Projects/mimalloc/src/alloc-override-osx.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +AvailabilityMacros.h +- +malloc/malloc.h +- +string.h +- + +/home/aprokurov/Projects/mimalloc/src/alloc-override.c +new +- + +/home/aprokurov/Projects/mimalloc/src/alloc-posix.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +errno.h +- +string.h +- +stdlib.h +- + +/home/aprokurov/Projects/mimalloc/src/alloc.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +mimalloc-atomic.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-atomic.h +string.h +- +stdlib.h +- +alloc-override.c +/home/aprokurov/Projects/mimalloc/src/alloc-override.c +Windows.h +- +unistd.h +- +new +- + +/home/aprokurov/Projects/mimalloc/src/arena.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +mimalloc-atomic.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-atomic.h +string.h +- +errno.h +- +bitmap.h +/home/aprokurov/Projects/mimalloc/src/bitmap.h + +/home/aprokurov/Projects/mimalloc/src/bitmap.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +bitmap.h +/home/aprokurov/Projects/mimalloc/src/bitmap.h + +/home/aprokurov/Projects/mimalloc/src/bitmap.h + +/home/aprokurov/Projects/mimalloc/src/heap.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +mimalloc-atomic.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-atomic.h +string.h +- + +/home/aprokurov/Projects/mimalloc/src/init.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +string.h +- +stdlib.h +- +Windows.h +- +fibersapi.h +- +pthread.h +- +intrin.h +- + +/home/aprokurov/Projects/mimalloc/src/options.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +mimalloc-atomic.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-atomic.h +stdio.h +- +stdlib.h +- +string.h +- +ctype.h +- +stdarg.h +- +conio.h +- +Windows.h +- +crt_externs.h +- + +/home/aprokurov/Projects/mimalloc/src/os.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +mimalloc-atomic.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-atomic.h +string.h +- +Windows.h +- +sys/mman.h +- +unistd.h +- +features.h +- +linux/mman.h +- +sys/mman.h +- +TargetConditionals.h +- +mach/vm_statistics.h +- +winternl.h +- +sys/syscall.h +- +sys/syscall.h +- +stdio.h +- + +/home/aprokurov/Projects/mimalloc/src/page-queue.c + +/home/aprokurov/Projects/mimalloc/src/page.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +mimalloc-atomic.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-atomic.h +page-queue.c +/home/aprokurov/Projects/mimalloc/src/page-queue.c + +/home/aprokurov/Projects/mimalloc/src/random.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +string.h +- +bcrypt.h +- +stdlib.h +- +sys/syscall.h +- +unistd.h +- +sys/types.h +- +sys/stat.h +- +fcntl.h +- +errno.h +- +Windows.h +- +mach/mach_time.h +- +time.h +- + +/home/aprokurov/Projects/mimalloc/src/region.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +mimalloc-atomic.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-atomic.h +string.h +- +bitmap.h +/home/aprokurov/Projects/mimalloc/src/bitmap.h + +/home/aprokurov/Projects/mimalloc/src/segment.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +mimalloc-atomic.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-atomic.h +string.h +- +stdio.h +- + +/home/aprokurov/Projects/mimalloc/src/static.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +stats.c +/home/aprokurov/Projects/mimalloc/src/stats.c +random.c +/home/aprokurov/Projects/mimalloc/src/random.c +os.c +/home/aprokurov/Projects/mimalloc/src/os.c +bitmap.c +/home/aprokurov/Projects/mimalloc/src/bitmap.c +arena.c +/home/aprokurov/Projects/mimalloc/src/arena.c +region.c +/home/aprokurov/Projects/mimalloc/src/region.c +segment.c +/home/aprokurov/Projects/mimalloc/src/segment.c +page.c +/home/aprokurov/Projects/mimalloc/src/page.c +heap.c +/home/aprokurov/Projects/mimalloc/src/heap.c +alloc.c +/home/aprokurov/Projects/mimalloc/src/alloc.c +alloc-aligned.c +/home/aprokurov/Projects/mimalloc/src/alloc-aligned.c +alloc-posix.c +/home/aprokurov/Projects/mimalloc/src/alloc-posix.c +alloc-override-osx.c +/home/aprokurov/Projects/mimalloc/src/alloc-override-osx.c +init.c +/home/aprokurov/Projects/mimalloc/src/init.c +options.c +/home/aprokurov/Projects/mimalloc/src/options.c + +/home/aprokurov/Projects/mimalloc/src/stats.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +mimalloc-atomic.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-atomic.h +stdio.h +- +string.h +- +Windows.h +- +time.h +- +Windows.h +- +psapi.h +- +stdio.h +- +unistd.h +- +sys/resource.h +- +mach/mach.h +- +kernel/OS.h +- + +include/mimalloc-atomic.h +atomic +- +stdatomic.h +- +Windows.h +- +intrin.h +- +thread +- +windows.h +- +emmintrin.h +- +synch.h +- +sched.h +- +unistd.h +- + +include/mimalloc-internal.h +mimalloc-types.h +include/mimalloc-types.h +errno.h +- +limits.h +- +pthread.h +- +pthread.h +- +windows.h +- +limits.h +- +limits.h +- +intrin.h +- +string.h +- +string.h +- +string.h +- + +include/mimalloc-types.h +stddef.h +- +stdint.h +- +mimalloc-atomic.h +- + +include/mimalloc.h +stddef.h +- +stdbool.h +- +cstdint +- +type_traits +- +utility +- + diff --git a/CMakeFiles/mimalloc-obj.dir/DependInfo.cmake b/CMakeFiles/mimalloc-obj.dir/DependInfo.cmake new file mode 100644 index 00000000..0cb7a93e --- /dev/null +++ b/CMakeFiles/mimalloc-obj.dir/DependInfo.cmake @@ -0,0 +1,26 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_C + "/home/aprokurov/Projects/mimalloc/src/static.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-obj.dir/src/static.c.o" + ) +set(CMAKE_C_COMPILER_ID "GNU") + +# Preprocessor definitions for this target. +set(CMAKE_TARGET_DEFINITIONS_C + "MI_MALLOC_OVERRIDE" + ) + +# The include file search paths: +set(CMAKE_C_TARGET_INCLUDE_PATH + "include" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/CMakeFiles/mimalloc-obj.dir/build.make b/CMakeFiles/mimalloc-obj.dir/build.make new file mode 100644 index 00000000..66852267 --- /dev/null +++ b/CMakeFiles/mimalloc-obj.dir/build.make @@ -0,0 +1,109 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/aprokurov/Projects/mimalloc + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/aprokurov/Projects/mimalloc + +# Include any dependencies generated for this target. +include CMakeFiles/mimalloc-obj.dir/depend.make + +# Include the progress variables for this target. +include CMakeFiles/mimalloc-obj.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/mimalloc-obj.dir/flags.make + +CMakeFiles/mimalloc-obj.dir/src/static.c.o: CMakeFiles/mimalloc-obj.dir/flags.make +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/static.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/mimalloc-obj.dir/src/static.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-obj.dir/src/static.c.o -c /home/aprokurov/Projects/mimalloc/src/static.c + +CMakeFiles/mimalloc-obj.dir/src/static.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-obj.dir/src/static.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/static.c > CMakeFiles/mimalloc-obj.dir/src/static.c.i + +CMakeFiles/mimalloc-obj.dir/src/static.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-obj.dir/src/static.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/static.c -o CMakeFiles/mimalloc-obj.dir/src/static.c.s + +mimalloc-obj: CMakeFiles/mimalloc-obj.dir/src/static.c.o +mimalloc-obj: CMakeFiles/mimalloc-obj.dir/build.make + +.PHONY : mimalloc-obj + +# Rule to build all files generated by this target. +CMakeFiles/mimalloc-obj.dir/build: mimalloc-obj + +.PHONY : CMakeFiles/mimalloc-obj.dir/build + +CMakeFiles/mimalloc-obj.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/mimalloc-obj.dir/cmake_clean.cmake +.PHONY : CMakeFiles/mimalloc-obj.dir/clean + +CMakeFiles/mimalloc-obj.dir/depend: + cd /home/aprokurov/Projects/mimalloc && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-obj.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/mimalloc-obj.dir/depend + diff --git a/CMakeFiles/mimalloc-obj.dir/cmake_clean.cmake b/CMakeFiles/mimalloc-obj.dir/cmake_clean.cmake new file mode 100644 index 00000000..a299a056 --- /dev/null +++ b/CMakeFiles/mimalloc-obj.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/mimalloc-obj.dir/src/static.c.o" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mimalloc-obj.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/CMakeFiles/mimalloc-obj.dir/depend.internal b/CMakeFiles/mimalloc-obj.dir/depend.internal new file mode 100644 index 00000000..a45f4cb2 --- /dev/null +++ b/CMakeFiles/mimalloc-obj.dir/depend.internal @@ -0,0 +1,27 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +CMakeFiles/mimalloc-obj.dir/src/static.c.o + /home/aprokurov/Projects/mimalloc/src/alloc-aligned.c + /home/aprokurov/Projects/mimalloc/src/alloc-override-osx.c + /home/aprokurov/Projects/mimalloc/src/alloc-override.c + /home/aprokurov/Projects/mimalloc/src/alloc-posix.c + /home/aprokurov/Projects/mimalloc/src/alloc.c + /home/aprokurov/Projects/mimalloc/src/arena.c + /home/aprokurov/Projects/mimalloc/src/bitmap.c + /home/aprokurov/Projects/mimalloc/src/bitmap.h + /home/aprokurov/Projects/mimalloc/src/heap.c + /home/aprokurov/Projects/mimalloc/src/init.c + /home/aprokurov/Projects/mimalloc/src/options.c + /home/aprokurov/Projects/mimalloc/src/os.c + /home/aprokurov/Projects/mimalloc/src/page-queue.c + /home/aprokurov/Projects/mimalloc/src/page.c + /home/aprokurov/Projects/mimalloc/src/random.c + /home/aprokurov/Projects/mimalloc/src/region.c + /home/aprokurov/Projects/mimalloc/src/segment.c + /home/aprokurov/Projects/mimalloc/src/static.c + /home/aprokurov/Projects/mimalloc/src/stats.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h diff --git a/CMakeFiles/mimalloc-obj.dir/depend.make b/CMakeFiles/mimalloc-obj.dir/depend.make new file mode 100644 index 00000000..5f2bb5c9 --- /dev/null +++ b/CMakeFiles/mimalloc-obj.dir/depend.make @@ -0,0 +1,27 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/alloc-aligned.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/alloc-override-osx.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/alloc-override.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/alloc-posix.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/alloc.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/arena.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/bitmap.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/bitmap.h +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/heap.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/init.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/options.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/os.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/page-queue.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/page.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/random.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/region.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/segment.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/static.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: src/stats.c +CMakeFiles/mimalloc-obj.dir/src/static.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc-obj.dir/src/static.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc-obj.dir/src/static.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc-obj.dir/src/static.c.o: include/mimalloc.h + diff --git a/CMakeFiles/mimalloc-obj.dir/flags.make b/CMakeFiles/mimalloc-obj.dir/flags.make new file mode 100644 index 00000000..5e7132e2 --- /dev/null +++ b/CMakeFiles/mimalloc-obj.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +# compile C with /usr/bin/cc +C_DEFINES = -DMI_MALLOC_OVERRIDE + +C_INCLUDES = -I/home/aprokurov/Projects/mimalloc/include + +C_FLAGS = -O3 -DNDEBUG -fPIC -Wall -Wextra -Wno-unknown-pragmas -fvisibility=hidden -Wno-invalid-memory-model -ftls-model=initial-exec -std=gnu11 + diff --git a/CMakeFiles/mimalloc-obj.dir/progress.make b/CMakeFiles/mimalloc-obj.dir/progress.make new file mode 100644 index 00000000..0b890e87 --- /dev/null +++ b/CMakeFiles/mimalloc-obj.dir/progress.make @@ -0,0 +1,2 @@ +CMAKE_PROGRESS_1 = 16 + diff --git a/CMakeFiles/mimalloc-obj.dir/src/static.c.o b/CMakeFiles/mimalloc-obj.dir/src/static.c.o new file mode 100644 index 00000000..8561ca52 Binary files /dev/null and b/CMakeFiles/mimalloc-obj.dir/src/static.c.o differ diff --git a/CMakeFiles/mimalloc-static.dir/C.includecache b/CMakeFiles/mimalloc-static.dir/C.includecache new file mode 100644 index 00000000..1499bf1d --- /dev/null +++ b/CMakeFiles/mimalloc-static.dir/C.includecache @@ -0,0 +1,94 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/home/aprokurov/Projects/mimalloc/src/init.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +string.h +- +stdlib.h +- +Windows.h +- +fibersapi.h +- +pthread.h +- +intrin.h +- + +include/mimalloc-atomic.h +atomic +- +stdatomic.h +- +Windows.h +- +intrin.h +- +thread +- +windows.h +- +emmintrin.h +- +synch.h +- +sched.h +- +unistd.h +- + +include/mimalloc-internal.h +mimalloc-types.h +include/mimalloc-types.h +errno.h +- +limits.h +- +pthread.h +- +pthread.h +- +windows.h +- +limits.h +- +limits.h +- +intrin.h +- +string.h +- +string.h +- +string.h +- + +include/mimalloc-types.h +stddef.h +- +stdint.h +- +mimalloc-atomic.h +- + +include/mimalloc.h +stddef.h +- +stdbool.h +- +cstdint +- +type_traits +- +utility +- + diff --git a/CMakeFiles/mimalloc-static.dir/DependInfo.cmake b/CMakeFiles/mimalloc-static.dir/DependInfo.cmake new file mode 100644 index 00000000..a1969908 --- /dev/null +++ b/CMakeFiles/mimalloc-static.dir/DependInfo.cmake @@ -0,0 +1,40 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_C + "/home/aprokurov/Projects/mimalloc/src/alloc-aligned.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o" + "/home/aprokurov/Projects/mimalloc/src/alloc-posix.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o" + "/home/aprokurov/Projects/mimalloc/src/alloc.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir/src/alloc.c.o" + "/home/aprokurov/Projects/mimalloc/src/arena.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir/src/arena.c.o" + "/home/aprokurov/Projects/mimalloc/src/bitmap.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir/src/bitmap.c.o" + "/home/aprokurov/Projects/mimalloc/src/heap.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir/src/heap.c.o" + "/home/aprokurov/Projects/mimalloc/src/init.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir/src/init.c.o" + "/home/aprokurov/Projects/mimalloc/src/options.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir/src/options.c.o" + "/home/aprokurov/Projects/mimalloc/src/os.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir/src/os.c.o" + "/home/aprokurov/Projects/mimalloc/src/page.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir/src/page.c.o" + "/home/aprokurov/Projects/mimalloc/src/random.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir/src/random.c.o" + "/home/aprokurov/Projects/mimalloc/src/region.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir/src/region.c.o" + "/home/aprokurov/Projects/mimalloc/src/segment.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir/src/segment.c.o" + "/home/aprokurov/Projects/mimalloc/src/stats.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir/src/stats.c.o" + ) +set(CMAKE_C_COMPILER_ID "GNU") + +# Preprocessor definitions for this target. +set(CMAKE_TARGET_DEFINITIONS_C + "MI_MALLOC_OVERRIDE" + "MI_STATIC_LIB" + ) + +# The include file search paths: +set(CMAKE_C_TARGET_INCLUDE_PATH + "include" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/CMakeFiles/mimalloc-static.dir/build.make b/CMakeFiles/mimalloc-static.dir/build.make new file mode 100644 index 00000000..52efc755 --- /dev/null +++ b/CMakeFiles/mimalloc-static.dir/build.make @@ -0,0 +1,313 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/aprokurov/Projects/mimalloc + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/aprokurov/Projects/mimalloc + +# Include any dependencies generated for this target. +include CMakeFiles/mimalloc-static.dir/depend.make + +# Include the progress variables for this target. +include CMakeFiles/mimalloc-static.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/mimalloc-static.dir/flags.make + +CMakeFiles/mimalloc-static.dir/src/stats.c.o: CMakeFiles/mimalloc-static.dir/flags.make +CMakeFiles/mimalloc-static.dir/src/stats.c.o: src/stats.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/mimalloc-static.dir/src/stats.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-static.dir/src/stats.c.o -c /home/aprokurov/Projects/mimalloc/src/stats.c + +CMakeFiles/mimalloc-static.dir/src/stats.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-static.dir/src/stats.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/stats.c > CMakeFiles/mimalloc-static.dir/src/stats.c.i + +CMakeFiles/mimalloc-static.dir/src/stats.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-static.dir/src/stats.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/stats.c -o CMakeFiles/mimalloc-static.dir/src/stats.c.s + +CMakeFiles/mimalloc-static.dir/src/random.c.o: CMakeFiles/mimalloc-static.dir/flags.make +CMakeFiles/mimalloc-static.dir/src/random.c.o: src/random.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object CMakeFiles/mimalloc-static.dir/src/random.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-static.dir/src/random.c.o -c /home/aprokurov/Projects/mimalloc/src/random.c + +CMakeFiles/mimalloc-static.dir/src/random.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-static.dir/src/random.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/random.c > CMakeFiles/mimalloc-static.dir/src/random.c.i + +CMakeFiles/mimalloc-static.dir/src/random.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-static.dir/src/random.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/random.c -o CMakeFiles/mimalloc-static.dir/src/random.c.s + +CMakeFiles/mimalloc-static.dir/src/os.c.o: CMakeFiles/mimalloc-static.dir/flags.make +CMakeFiles/mimalloc-static.dir/src/os.c.o: src/os.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object CMakeFiles/mimalloc-static.dir/src/os.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-static.dir/src/os.c.o -c /home/aprokurov/Projects/mimalloc/src/os.c + +CMakeFiles/mimalloc-static.dir/src/os.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-static.dir/src/os.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/os.c > CMakeFiles/mimalloc-static.dir/src/os.c.i + +CMakeFiles/mimalloc-static.dir/src/os.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-static.dir/src/os.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/os.c -o CMakeFiles/mimalloc-static.dir/src/os.c.s + +CMakeFiles/mimalloc-static.dir/src/bitmap.c.o: CMakeFiles/mimalloc-static.dir/flags.make +CMakeFiles/mimalloc-static.dir/src/bitmap.c.o: src/bitmap.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building C object CMakeFiles/mimalloc-static.dir/src/bitmap.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-static.dir/src/bitmap.c.o -c /home/aprokurov/Projects/mimalloc/src/bitmap.c + +CMakeFiles/mimalloc-static.dir/src/bitmap.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-static.dir/src/bitmap.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/bitmap.c > CMakeFiles/mimalloc-static.dir/src/bitmap.c.i + +CMakeFiles/mimalloc-static.dir/src/bitmap.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-static.dir/src/bitmap.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/bitmap.c -o CMakeFiles/mimalloc-static.dir/src/bitmap.c.s + +CMakeFiles/mimalloc-static.dir/src/arena.c.o: CMakeFiles/mimalloc-static.dir/flags.make +CMakeFiles/mimalloc-static.dir/src/arena.c.o: src/arena.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building C object CMakeFiles/mimalloc-static.dir/src/arena.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-static.dir/src/arena.c.o -c /home/aprokurov/Projects/mimalloc/src/arena.c + +CMakeFiles/mimalloc-static.dir/src/arena.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-static.dir/src/arena.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/arena.c > CMakeFiles/mimalloc-static.dir/src/arena.c.i + +CMakeFiles/mimalloc-static.dir/src/arena.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-static.dir/src/arena.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/arena.c -o CMakeFiles/mimalloc-static.dir/src/arena.c.s + +CMakeFiles/mimalloc-static.dir/src/region.c.o: CMakeFiles/mimalloc-static.dir/flags.make +CMakeFiles/mimalloc-static.dir/src/region.c.o: src/region.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building C object CMakeFiles/mimalloc-static.dir/src/region.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-static.dir/src/region.c.o -c /home/aprokurov/Projects/mimalloc/src/region.c + +CMakeFiles/mimalloc-static.dir/src/region.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-static.dir/src/region.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/region.c > CMakeFiles/mimalloc-static.dir/src/region.c.i + +CMakeFiles/mimalloc-static.dir/src/region.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-static.dir/src/region.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/region.c -o CMakeFiles/mimalloc-static.dir/src/region.c.s + +CMakeFiles/mimalloc-static.dir/src/segment.c.o: CMakeFiles/mimalloc-static.dir/flags.make +CMakeFiles/mimalloc-static.dir/src/segment.c.o: src/segment.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building C object CMakeFiles/mimalloc-static.dir/src/segment.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-static.dir/src/segment.c.o -c /home/aprokurov/Projects/mimalloc/src/segment.c + +CMakeFiles/mimalloc-static.dir/src/segment.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-static.dir/src/segment.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/segment.c > CMakeFiles/mimalloc-static.dir/src/segment.c.i + +CMakeFiles/mimalloc-static.dir/src/segment.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-static.dir/src/segment.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/segment.c -o CMakeFiles/mimalloc-static.dir/src/segment.c.s + +CMakeFiles/mimalloc-static.dir/src/page.c.o: CMakeFiles/mimalloc-static.dir/flags.make +CMakeFiles/mimalloc-static.dir/src/page.c.o: src/page.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building C object CMakeFiles/mimalloc-static.dir/src/page.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-static.dir/src/page.c.o -c /home/aprokurov/Projects/mimalloc/src/page.c + +CMakeFiles/mimalloc-static.dir/src/page.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-static.dir/src/page.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/page.c > CMakeFiles/mimalloc-static.dir/src/page.c.i + +CMakeFiles/mimalloc-static.dir/src/page.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-static.dir/src/page.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/page.c -o CMakeFiles/mimalloc-static.dir/src/page.c.s + +CMakeFiles/mimalloc-static.dir/src/alloc.c.o: CMakeFiles/mimalloc-static.dir/flags.make +CMakeFiles/mimalloc-static.dir/src/alloc.c.o: src/alloc.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building C object CMakeFiles/mimalloc-static.dir/src/alloc.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-static.dir/src/alloc.c.o -c /home/aprokurov/Projects/mimalloc/src/alloc.c + +CMakeFiles/mimalloc-static.dir/src/alloc.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-static.dir/src/alloc.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/alloc.c > CMakeFiles/mimalloc-static.dir/src/alloc.c.i + +CMakeFiles/mimalloc-static.dir/src/alloc.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-static.dir/src/alloc.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/alloc.c -o CMakeFiles/mimalloc-static.dir/src/alloc.c.s + +CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o: CMakeFiles/mimalloc-static.dir/flags.make +CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o: src/alloc-aligned.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Building C object CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o -c /home/aprokurov/Projects/mimalloc/src/alloc-aligned.c + +CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/alloc-aligned.c > CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.i + +CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/alloc-aligned.c -o CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.s + +CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o: CMakeFiles/mimalloc-static.dir/flags.make +CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o: src/alloc-posix.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_11) "Building C object CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o -c /home/aprokurov/Projects/mimalloc/src/alloc-posix.c + +CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/alloc-posix.c > CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.i + +CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/alloc-posix.c -o CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.s + +CMakeFiles/mimalloc-static.dir/src/heap.c.o: CMakeFiles/mimalloc-static.dir/flags.make +CMakeFiles/mimalloc-static.dir/src/heap.c.o: src/heap.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_12) "Building C object CMakeFiles/mimalloc-static.dir/src/heap.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-static.dir/src/heap.c.o -c /home/aprokurov/Projects/mimalloc/src/heap.c + +CMakeFiles/mimalloc-static.dir/src/heap.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-static.dir/src/heap.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/heap.c > CMakeFiles/mimalloc-static.dir/src/heap.c.i + +CMakeFiles/mimalloc-static.dir/src/heap.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-static.dir/src/heap.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/heap.c -o CMakeFiles/mimalloc-static.dir/src/heap.c.s + +CMakeFiles/mimalloc-static.dir/src/options.c.o: CMakeFiles/mimalloc-static.dir/flags.make +CMakeFiles/mimalloc-static.dir/src/options.c.o: src/options.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_13) "Building C object CMakeFiles/mimalloc-static.dir/src/options.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-static.dir/src/options.c.o -c /home/aprokurov/Projects/mimalloc/src/options.c + +CMakeFiles/mimalloc-static.dir/src/options.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-static.dir/src/options.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/options.c > CMakeFiles/mimalloc-static.dir/src/options.c.i + +CMakeFiles/mimalloc-static.dir/src/options.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-static.dir/src/options.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/options.c -o CMakeFiles/mimalloc-static.dir/src/options.c.s + +CMakeFiles/mimalloc-static.dir/src/init.c.o: CMakeFiles/mimalloc-static.dir/flags.make +CMakeFiles/mimalloc-static.dir/src/init.c.o: src/init.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_14) "Building C object CMakeFiles/mimalloc-static.dir/src/init.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-static.dir/src/init.c.o -c /home/aprokurov/Projects/mimalloc/src/init.c + +CMakeFiles/mimalloc-static.dir/src/init.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-static.dir/src/init.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/init.c > CMakeFiles/mimalloc-static.dir/src/init.c.i + +CMakeFiles/mimalloc-static.dir/src/init.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-static.dir/src/init.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/init.c -o CMakeFiles/mimalloc-static.dir/src/init.c.s + +# Object files for target mimalloc-static +mimalloc__static_OBJECTS = \ +"CMakeFiles/mimalloc-static.dir/src/stats.c.o" \ +"CMakeFiles/mimalloc-static.dir/src/random.c.o" \ +"CMakeFiles/mimalloc-static.dir/src/os.c.o" \ +"CMakeFiles/mimalloc-static.dir/src/bitmap.c.o" \ +"CMakeFiles/mimalloc-static.dir/src/arena.c.o" \ +"CMakeFiles/mimalloc-static.dir/src/region.c.o" \ +"CMakeFiles/mimalloc-static.dir/src/segment.c.o" \ +"CMakeFiles/mimalloc-static.dir/src/page.c.o" \ +"CMakeFiles/mimalloc-static.dir/src/alloc.c.o" \ +"CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o" \ +"CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o" \ +"CMakeFiles/mimalloc-static.dir/src/heap.c.o" \ +"CMakeFiles/mimalloc-static.dir/src/options.c.o" \ +"CMakeFiles/mimalloc-static.dir/src/init.c.o" + +# External object files for target mimalloc-static +mimalloc__static_EXTERNAL_OBJECTS = + +libmimalloc.a: CMakeFiles/mimalloc-static.dir/src/stats.c.o +libmimalloc.a: CMakeFiles/mimalloc-static.dir/src/random.c.o +libmimalloc.a: CMakeFiles/mimalloc-static.dir/src/os.c.o +libmimalloc.a: CMakeFiles/mimalloc-static.dir/src/bitmap.c.o +libmimalloc.a: CMakeFiles/mimalloc-static.dir/src/arena.c.o +libmimalloc.a: CMakeFiles/mimalloc-static.dir/src/region.c.o +libmimalloc.a: CMakeFiles/mimalloc-static.dir/src/segment.c.o +libmimalloc.a: CMakeFiles/mimalloc-static.dir/src/page.c.o +libmimalloc.a: CMakeFiles/mimalloc-static.dir/src/alloc.c.o +libmimalloc.a: CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o +libmimalloc.a: CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o +libmimalloc.a: CMakeFiles/mimalloc-static.dir/src/heap.c.o +libmimalloc.a: CMakeFiles/mimalloc-static.dir/src/options.c.o +libmimalloc.a: CMakeFiles/mimalloc-static.dir/src/init.c.o +libmimalloc.a: CMakeFiles/mimalloc-static.dir/build.make +libmimalloc.a: CMakeFiles/mimalloc-static.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_15) "Linking C static library libmimalloc.a" + $(CMAKE_COMMAND) -P CMakeFiles/mimalloc-static.dir/cmake_clean_target.cmake + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/mimalloc-static.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/mimalloc-static.dir/build: libmimalloc.a + +.PHONY : CMakeFiles/mimalloc-static.dir/build + +CMakeFiles/mimalloc-static.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/mimalloc-static.dir/cmake_clean.cmake +.PHONY : CMakeFiles/mimalloc-static.dir/clean + +CMakeFiles/mimalloc-static.dir/depend: + cd /home/aprokurov/Projects/mimalloc && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/mimalloc-static.dir/depend + diff --git a/CMakeFiles/mimalloc-static.dir/cmake_clean.cmake b/CMakeFiles/mimalloc-static.dir/cmake_clean.cmake new file mode 100644 index 00000000..3faa2a65 --- /dev/null +++ b/CMakeFiles/mimalloc-static.dir/cmake_clean.cmake @@ -0,0 +1,23 @@ +file(REMOVE_RECURSE + "CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o" + "CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o" + "CMakeFiles/mimalloc-static.dir/src/alloc.c.o" + "CMakeFiles/mimalloc-static.dir/src/arena.c.o" + "CMakeFiles/mimalloc-static.dir/src/bitmap.c.o" + "CMakeFiles/mimalloc-static.dir/src/heap.c.o" + "CMakeFiles/mimalloc-static.dir/src/init.c.o" + "CMakeFiles/mimalloc-static.dir/src/options.c.o" + "CMakeFiles/mimalloc-static.dir/src/os.c.o" + "CMakeFiles/mimalloc-static.dir/src/page.c.o" + "CMakeFiles/mimalloc-static.dir/src/random.c.o" + "CMakeFiles/mimalloc-static.dir/src/region.c.o" + "CMakeFiles/mimalloc-static.dir/src/segment.c.o" + "CMakeFiles/mimalloc-static.dir/src/stats.c.o" + "libmimalloc.a" + "libmimalloc.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mimalloc-static.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/CMakeFiles/mimalloc-static.dir/cmake_clean_target.cmake b/CMakeFiles/mimalloc-static.dir/cmake_clean_target.cmake new file mode 100644 index 00000000..12ef1a0d --- /dev/null +++ b/CMakeFiles/mimalloc-static.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libmimalloc.a" +) diff --git a/CMakeFiles/mimalloc-static.dir/depend.internal b/CMakeFiles/mimalloc-static.dir/depend.internal new file mode 100644 index 00000000..7dc9383a --- /dev/null +++ b/CMakeFiles/mimalloc-static.dir/depend.internal @@ -0,0 +1,92 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o + /home/aprokurov/Projects/mimalloc/src/alloc-aligned.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o + /home/aprokurov/Projects/mimalloc/src/alloc-posix.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc-static.dir/src/alloc.c.o + /home/aprokurov/Projects/mimalloc/src/alloc-override.c + /home/aprokurov/Projects/mimalloc/src/alloc.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc-static.dir/src/arena.c.o + /home/aprokurov/Projects/mimalloc/src/arena.c + /home/aprokurov/Projects/mimalloc/src/bitmap.h + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc-static.dir/src/bitmap.c.o + /home/aprokurov/Projects/mimalloc/src/bitmap.c + /home/aprokurov/Projects/mimalloc/src/bitmap.h + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc-static.dir/src/heap.c.o + /home/aprokurov/Projects/mimalloc/src/heap.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc-static.dir/src/init.c.o + /home/aprokurov/Projects/mimalloc/src/init.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc-static.dir/src/options.c.o + /home/aprokurov/Projects/mimalloc/src/options.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc-static.dir/src/os.c.o + /home/aprokurov/Projects/mimalloc/src/os.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc-static.dir/src/page.c.o + /home/aprokurov/Projects/mimalloc/src/page-queue.c + /home/aprokurov/Projects/mimalloc/src/page.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc-static.dir/src/random.c.o + /home/aprokurov/Projects/mimalloc/src/random.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc-static.dir/src/region.c.o + /home/aprokurov/Projects/mimalloc/src/bitmap.h + /home/aprokurov/Projects/mimalloc/src/region.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc-static.dir/src/segment.c.o + /home/aprokurov/Projects/mimalloc/src/segment.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc-static.dir/src/stats.c.o + /home/aprokurov/Projects/mimalloc/src/stats.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h diff --git a/CMakeFiles/mimalloc-static.dir/depend.make b/CMakeFiles/mimalloc-static.dir/depend.make new file mode 100644 index 00000000..fbe8657b --- /dev/null +++ b/CMakeFiles/mimalloc-static.dir/depend.make @@ -0,0 +1,92 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o: src/alloc-aligned.c +CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o: include/mimalloc.h + +CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o: src/alloc-posix.c +CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o: include/mimalloc.h + +CMakeFiles/mimalloc-static.dir/src/alloc.c.o: src/alloc-override.c +CMakeFiles/mimalloc-static.dir/src/alloc.c.o: src/alloc.c +CMakeFiles/mimalloc-static.dir/src/alloc.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc-static.dir/src/alloc.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc-static.dir/src/alloc.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc-static.dir/src/alloc.c.o: include/mimalloc.h + +CMakeFiles/mimalloc-static.dir/src/arena.c.o: src/arena.c +CMakeFiles/mimalloc-static.dir/src/arena.c.o: src/bitmap.h +CMakeFiles/mimalloc-static.dir/src/arena.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc-static.dir/src/arena.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc-static.dir/src/arena.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc-static.dir/src/arena.c.o: include/mimalloc.h + +CMakeFiles/mimalloc-static.dir/src/bitmap.c.o: src/bitmap.c +CMakeFiles/mimalloc-static.dir/src/bitmap.c.o: src/bitmap.h +CMakeFiles/mimalloc-static.dir/src/bitmap.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc-static.dir/src/bitmap.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc-static.dir/src/bitmap.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc-static.dir/src/bitmap.c.o: include/mimalloc.h + +CMakeFiles/mimalloc-static.dir/src/heap.c.o: src/heap.c +CMakeFiles/mimalloc-static.dir/src/heap.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc-static.dir/src/heap.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc-static.dir/src/heap.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc-static.dir/src/heap.c.o: include/mimalloc.h + +CMakeFiles/mimalloc-static.dir/src/init.c.o: src/init.c +CMakeFiles/mimalloc-static.dir/src/init.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc-static.dir/src/init.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc-static.dir/src/init.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc-static.dir/src/init.c.o: include/mimalloc.h + +CMakeFiles/mimalloc-static.dir/src/options.c.o: src/options.c +CMakeFiles/mimalloc-static.dir/src/options.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc-static.dir/src/options.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc-static.dir/src/options.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc-static.dir/src/options.c.o: include/mimalloc.h + +CMakeFiles/mimalloc-static.dir/src/os.c.o: src/os.c +CMakeFiles/mimalloc-static.dir/src/os.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc-static.dir/src/os.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc-static.dir/src/os.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc-static.dir/src/os.c.o: include/mimalloc.h + +CMakeFiles/mimalloc-static.dir/src/page.c.o: src/page-queue.c +CMakeFiles/mimalloc-static.dir/src/page.c.o: src/page.c +CMakeFiles/mimalloc-static.dir/src/page.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc-static.dir/src/page.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc-static.dir/src/page.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc-static.dir/src/page.c.o: include/mimalloc.h + +CMakeFiles/mimalloc-static.dir/src/random.c.o: src/random.c +CMakeFiles/mimalloc-static.dir/src/random.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc-static.dir/src/random.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc-static.dir/src/random.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc-static.dir/src/random.c.o: include/mimalloc.h + +CMakeFiles/mimalloc-static.dir/src/region.c.o: src/bitmap.h +CMakeFiles/mimalloc-static.dir/src/region.c.o: src/region.c +CMakeFiles/mimalloc-static.dir/src/region.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc-static.dir/src/region.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc-static.dir/src/region.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc-static.dir/src/region.c.o: include/mimalloc.h + +CMakeFiles/mimalloc-static.dir/src/segment.c.o: src/segment.c +CMakeFiles/mimalloc-static.dir/src/segment.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc-static.dir/src/segment.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc-static.dir/src/segment.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc-static.dir/src/segment.c.o: include/mimalloc.h + +CMakeFiles/mimalloc-static.dir/src/stats.c.o: src/stats.c +CMakeFiles/mimalloc-static.dir/src/stats.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc-static.dir/src/stats.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc-static.dir/src/stats.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc-static.dir/src/stats.c.o: include/mimalloc.h + diff --git a/CMakeFiles/mimalloc-static.dir/flags.make b/CMakeFiles/mimalloc-static.dir/flags.make new file mode 100644 index 00000000..273b158a --- /dev/null +++ b/CMakeFiles/mimalloc-static.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +# compile C with /usr/bin/cc +C_DEFINES = -DMI_MALLOC_OVERRIDE -DMI_STATIC_LIB + +C_INCLUDES = -I/home/aprokurov/Projects/mimalloc/include + +C_FLAGS = -O3 -DNDEBUG -fPIC -Wall -Wextra -Wno-unknown-pragmas -fvisibility=hidden -Wno-invalid-memory-model -ftls-model=initial-exec -std=gnu11 + diff --git a/CMakeFiles/mimalloc-static.dir/link.txt b/CMakeFiles/mimalloc-static.dir/link.txt new file mode 100644 index 00000000..e45d2ea3 --- /dev/null +++ b/CMakeFiles/mimalloc-static.dir/link.txt @@ -0,0 +1,2 @@ +/usr/bin/ar qc libmimalloc.a CMakeFiles/mimalloc-static.dir/src/stats.c.o CMakeFiles/mimalloc-static.dir/src/random.c.o CMakeFiles/mimalloc-static.dir/src/os.c.o CMakeFiles/mimalloc-static.dir/src/bitmap.c.o CMakeFiles/mimalloc-static.dir/src/arena.c.o CMakeFiles/mimalloc-static.dir/src/region.c.o CMakeFiles/mimalloc-static.dir/src/segment.c.o CMakeFiles/mimalloc-static.dir/src/page.c.o CMakeFiles/mimalloc-static.dir/src/alloc.c.o CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o CMakeFiles/mimalloc-static.dir/src/heap.c.o CMakeFiles/mimalloc-static.dir/src/options.c.o CMakeFiles/mimalloc-static.dir/src/init.c.o +/usr/bin/ranlib libmimalloc.a diff --git a/CMakeFiles/mimalloc-static.dir/progress.make b/CMakeFiles/mimalloc-static.dir/progress.make new file mode 100644 index 00000000..5553691b --- /dev/null +++ b/CMakeFiles/mimalloc-static.dir/progress.make @@ -0,0 +1,16 @@ +CMAKE_PROGRESS_1 = 17 +CMAKE_PROGRESS_2 = 18 +CMAKE_PROGRESS_3 = 19 +CMAKE_PROGRESS_4 = 20 +CMAKE_PROGRESS_5 = 21 +CMAKE_PROGRESS_6 = 22 +CMAKE_PROGRESS_7 = 23 +CMAKE_PROGRESS_8 = 24 +CMAKE_PROGRESS_9 = 25 +CMAKE_PROGRESS_10 = 26 +CMAKE_PROGRESS_11 = 27 +CMAKE_PROGRESS_12 = 28 +CMAKE_PROGRESS_13 = 29 +CMAKE_PROGRESS_14 = 30 +CMAKE_PROGRESS_15 = 31 + diff --git a/CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o b/CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o new file mode 100644 index 00000000..1a3df180 Binary files /dev/null and b/CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o differ diff --git a/CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o b/CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o new file mode 100644 index 00000000..97d23f26 Binary files /dev/null and b/CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o differ diff --git a/CMakeFiles/mimalloc-static.dir/src/alloc.c.o b/CMakeFiles/mimalloc-static.dir/src/alloc.c.o new file mode 100644 index 00000000..cf6af9e8 Binary files /dev/null and b/CMakeFiles/mimalloc-static.dir/src/alloc.c.o differ diff --git a/CMakeFiles/mimalloc-static.dir/src/arena.c.o b/CMakeFiles/mimalloc-static.dir/src/arena.c.o new file mode 100644 index 00000000..2959ec80 Binary files /dev/null and b/CMakeFiles/mimalloc-static.dir/src/arena.c.o differ diff --git a/CMakeFiles/mimalloc-static.dir/src/bitmap.c.o b/CMakeFiles/mimalloc-static.dir/src/bitmap.c.o new file mode 100644 index 00000000..692771d3 Binary files /dev/null and b/CMakeFiles/mimalloc-static.dir/src/bitmap.c.o differ diff --git a/CMakeFiles/mimalloc-static.dir/src/heap.c.o b/CMakeFiles/mimalloc-static.dir/src/heap.c.o new file mode 100644 index 00000000..bd1d5a8a Binary files /dev/null and b/CMakeFiles/mimalloc-static.dir/src/heap.c.o differ diff --git a/CMakeFiles/mimalloc-static.dir/src/init.c.o b/CMakeFiles/mimalloc-static.dir/src/init.c.o new file mode 100644 index 00000000..dbf415a9 Binary files /dev/null and b/CMakeFiles/mimalloc-static.dir/src/init.c.o differ diff --git a/CMakeFiles/mimalloc-static.dir/src/options.c.o b/CMakeFiles/mimalloc-static.dir/src/options.c.o new file mode 100644 index 00000000..e7794165 Binary files /dev/null and b/CMakeFiles/mimalloc-static.dir/src/options.c.o differ diff --git a/CMakeFiles/mimalloc-static.dir/src/os.c.o b/CMakeFiles/mimalloc-static.dir/src/os.c.o new file mode 100644 index 00000000..98cf2284 Binary files /dev/null and b/CMakeFiles/mimalloc-static.dir/src/os.c.o differ diff --git a/CMakeFiles/mimalloc-static.dir/src/page.c.o b/CMakeFiles/mimalloc-static.dir/src/page.c.o new file mode 100644 index 00000000..f890b823 Binary files /dev/null and b/CMakeFiles/mimalloc-static.dir/src/page.c.o differ diff --git a/CMakeFiles/mimalloc-static.dir/src/random.c.o b/CMakeFiles/mimalloc-static.dir/src/random.c.o new file mode 100644 index 00000000..3c1fa658 Binary files /dev/null and b/CMakeFiles/mimalloc-static.dir/src/random.c.o differ diff --git a/CMakeFiles/mimalloc-static.dir/src/region.c.o b/CMakeFiles/mimalloc-static.dir/src/region.c.o new file mode 100644 index 00000000..cadc665c Binary files /dev/null and b/CMakeFiles/mimalloc-static.dir/src/region.c.o differ diff --git a/CMakeFiles/mimalloc-static.dir/src/segment.c.o b/CMakeFiles/mimalloc-static.dir/src/segment.c.o new file mode 100644 index 00000000..b5f773ae Binary files /dev/null and b/CMakeFiles/mimalloc-static.dir/src/segment.c.o differ diff --git a/CMakeFiles/mimalloc-static.dir/src/stats.c.o b/CMakeFiles/mimalloc-static.dir/src/stats.c.o new file mode 100644 index 00000000..510052b3 Binary files /dev/null and b/CMakeFiles/mimalloc-static.dir/src/stats.c.o differ diff --git a/CMakeFiles/mimalloc-test-api.dir/C.includecache b/CMakeFiles/mimalloc-test-api.dir/C.includecache new file mode 100644 index 00000000..fbe70683 --- /dev/null +++ b/CMakeFiles/mimalloc-test-api.dir/C.includecache @@ -0,0 +1,36 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/home/aprokurov/Projects/mimalloc/test/test-api.c +stdio.h +- +assert.h +- +stdbool.h +- +stdint.h +- +errno.h +- +vector +- +mimalloc.h +/home/aprokurov/Projects/mimalloc/test/mimalloc.h + +include/mimalloc.h +stddef.h +- +stdbool.h +- +cstdint +- +type_traits +- +utility +- + diff --git a/CMakeFiles/mimalloc-test-api.dir/DependInfo.cmake b/CMakeFiles/mimalloc-test-api.dir/DependInfo.cmake new file mode 100644 index 00000000..32795242 --- /dev/null +++ b/CMakeFiles/mimalloc-test-api.dir/DependInfo.cmake @@ -0,0 +1,22 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_C + "/home/aprokurov/Projects/mimalloc/test/test-api.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-test-api.dir/test/test-api.c.o" + ) +set(CMAKE_C_COMPILER_ID "GNU") + +# The include file search paths: +set(CMAKE_C_TARGET_INCLUDE_PATH + "include" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-static.dir/DependInfo.cmake" + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/CMakeFiles/mimalloc-test-api.dir/build.make b/CMakeFiles/mimalloc-test-api.dir/build.make new file mode 100644 index 00000000..8516914c --- /dev/null +++ b/CMakeFiles/mimalloc-test-api.dir/build.make @@ -0,0 +1,119 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/aprokurov/Projects/mimalloc + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/aprokurov/Projects/mimalloc + +# Include any dependencies generated for this target. +include CMakeFiles/mimalloc-test-api.dir/depend.make + +# Include the progress variables for this target. +include CMakeFiles/mimalloc-test-api.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/mimalloc-test-api.dir/flags.make + +CMakeFiles/mimalloc-test-api.dir/test/test-api.c.o: CMakeFiles/mimalloc-test-api.dir/flags.make +CMakeFiles/mimalloc-test-api.dir/test/test-api.c.o: test/test-api.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/mimalloc-test-api.dir/test/test-api.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-test-api.dir/test/test-api.c.o -c /home/aprokurov/Projects/mimalloc/test/test-api.c + +CMakeFiles/mimalloc-test-api.dir/test/test-api.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-test-api.dir/test/test-api.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/test/test-api.c > CMakeFiles/mimalloc-test-api.dir/test/test-api.c.i + +CMakeFiles/mimalloc-test-api.dir/test/test-api.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-test-api.dir/test/test-api.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/test/test-api.c -o CMakeFiles/mimalloc-test-api.dir/test/test-api.c.s + +# Object files for target mimalloc-test-api +mimalloc__test__api_OBJECTS = \ +"CMakeFiles/mimalloc-test-api.dir/test/test-api.c.o" + +# External object files for target mimalloc-test-api +mimalloc__test__api_EXTERNAL_OBJECTS = + +mimalloc-test-api: CMakeFiles/mimalloc-test-api.dir/test/test-api.c.o +mimalloc-test-api: CMakeFiles/mimalloc-test-api.dir/build.make +mimalloc-test-api: libmimalloc.a +mimalloc-test-api: /usr/lib/librt.so +mimalloc-test-api: CMakeFiles/mimalloc-test-api.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C executable mimalloc-test-api" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/mimalloc-test-api.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/mimalloc-test-api.dir/build: mimalloc-test-api + +.PHONY : CMakeFiles/mimalloc-test-api.dir/build + +CMakeFiles/mimalloc-test-api.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/mimalloc-test-api.dir/cmake_clean.cmake +.PHONY : CMakeFiles/mimalloc-test-api.dir/clean + +CMakeFiles/mimalloc-test-api.dir/depend: + cd /home/aprokurov/Projects/mimalloc && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-test-api.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/mimalloc-test-api.dir/depend + diff --git a/CMakeFiles/mimalloc-test-api.dir/cmake_clean.cmake b/CMakeFiles/mimalloc-test-api.dir/cmake_clean.cmake new file mode 100644 index 00000000..279fd2be --- /dev/null +++ b/CMakeFiles/mimalloc-test-api.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +file(REMOVE_RECURSE + "CMakeFiles/mimalloc-test-api.dir/test/test-api.c.o" + "mimalloc-test-api" + "mimalloc-test-api.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mimalloc-test-api.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/CMakeFiles/mimalloc-test-api.dir/depend.internal b/CMakeFiles/mimalloc-test-api.dir/depend.internal new file mode 100644 index 00000000..1540bbc6 --- /dev/null +++ b/CMakeFiles/mimalloc-test-api.dir/depend.internal @@ -0,0 +1,6 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +CMakeFiles/mimalloc-test-api.dir/test/test-api.c.o + /home/aprokurov/Projects/mimalloc/test/test-api.c + include/mimalloc.h diff --git a/CMakeFiles/mimalloc-test-api.dir/depend.make b/CMakeFiles/mimalloc-test-api.dir/depend.make new file mode 100644 index 00000000..18f1dfd9 --- /dev/null +++ b/CMakeFiles/mimalloc-test-api.dir/depend.make @@ -0,0 +1,6 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +CMakeFiles/mimalloc-test-api.dir/test/test-api.c.o: test/test-api.c +CMakeFiles/mimalloc-test-api.dir/test/test-api.c.o: include/mimalloc.h + diff --git a/CMakeFiles/mimalloc-test-api.dir/flags.make b/CMakeFiles/mimalloc-test-api.dir/flags.make new file mode 100644 index 00000000..2692a039 --- /dev/null +++ b/CMakeFiles/mimalloc-test-api.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +# compile C with /usr/bin/cc +C_DEFINES = + +C_INCLUDES = -I/home/aprokurov/Projects/mimalloc/include + +C_FLAGS = -O3 -DNDEBUG -Wall -Wextra -Wno-unknown-pragmas -fvisibility=hidden -Wno-invalid-memory-model -ftls-model=initial-exec -std=gnu11 + diff --git a/CMakeFiles/mimalloc-test-api.dir/link.txt b/CMakeFiles/mimalloc-test-api.dir/link.txt new file mode 100644 index 00000000..771cdf40 --- /dev/null +++ b/CMakeFiles/mimalloc-test-api.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -O3 -DNDEBUG -rdynamic CMakeFiles/mimalloc-test-api.dir/test/test-api.c.o -o mimalloc-test-api libmimalloc.a -lpthread -lrt diff --git a/CMakeFiles/mimalloc-test-api.dir/progress.make b/CMakeFiles/mimalloc-test-api.dir/progress.make new file mode 100644 index 00000000..e1615c18 --- /dev/null +++ b/CMakeFiles/mimalloc-test-api.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 32 +CMAKE_PROGRESS_2 = 33 + diff --git a/CMakeFiles/mimalloc-test-api.dir/test/test-api.c.o b/CMakeFiles/mimalloc-test-api.dir/test/test-api.c.o new file mode 100644 index 00000000..8d2868c0 Binary files /dev/null and b/CMakeFiles/mimalloc-test-api.dir/test/test-api.c.o differ diff --git a/CMakeFiles/mimalloc-test-stress.dir/C.includecache b/CMakeFiles/mimalloc-test-stress.dir/C.includecache new file mode 100644 index 00000000..d79fd494 --- /dev/null +++ b/CMakeFiles/mimalloc-test-stress.dir/C.includecache @@ -0,0 +1,42 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/home/aprokurov/Projects/mimalloc/test/test-stress.c +stdio.h +- +stdlib.h +- +stdint.h +- +stdbool.h +- +string.h +- +mimalloc.h +- +Windows.h +- +pthread.h +- +atomic +- +stdatomic.h +- + +include/mimalloc.h +stddef.h +- +stdbool.h +- +cstdint +- +type_traits +- +utility +- + diff --git a/CMakeFiles/mimalloc-test-stress.dir/DependInfo.cmake b/CMakeFiles/mimalloc-test-stress.dir/DependInfo.cmake new file mode 100644 index 00000000..4af172cf --- /dev/null +++ b/CMakeFiles/mimalloc-test-stress.dir/DependInfo.cmake @@ -0,0 +1,22 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_C + "/home/aprokurov/Projects/mimalloc/test/test-stress.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.o" + ) +set(CMAKE_C_COMPILER_ID "GNU") + +# The include file search paths: +set(CMAKE_C_TARGET_INCLUDE_PATH + "include" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir/DependInfo.cmake" + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/CMakeFiles/mimalloc-test-stress.dir/build.make b/CMakeFiles/mimalloc-test-stress.dir/build.make new file mode 100644 index 00000000..65606366 --- /dev/null +++ b/CMakeFiles/mimalloc-test-stress.dir/build.make @@ -0,0 +1,119 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/aprokurov/Projects/mimalloc + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/aprokurov/Projects/mimalloc + +# Include any dependencies generated for this target. +include CMakeFiles/mimalloc-test-stress.dir/depend.make + +# Include the progress variables for this target. +include CMakeFiles/mimalloc-test-stress.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/mimalloc-test-stress.dir/flags.make + +CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.o: CMakeFiles/mimalloc-test-stress.dir/flags.make +CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.o: test/test-stress.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.o -c /home/aprokurov/Projects/mimalloc/test/test-stress.c + +CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/test/test-stress.c > CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.i + +CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/test/test-stress.c -o CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.s + +# Object files for target mimalloc-test-stress +mimalloc__test__stress_OBJECTS = \ +"CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.o" + +# External object files for target mimalloc-test-stress +mimalloc__test__stress_EXTERNAL_OBJECTS = + +mimalloc-test-stress: CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.o +mimalloc-test-stress: CMakeFiles/mimalloc-test-stress.dir/build.make +mimalloc-test-stress: libmimalloc.so.1.7 +mimalloc-test-stress: /usr/lib/librt.so +mimalloc-test-stress: CMakeFiles/mimalloc-test-stress.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C executable mimalloc-test-stress" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/mimalloc-test-stress.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/mimalloc-test-stress.dir/build: mimalloc-test-stress + +.PHONY : CMakeFiles/mimalloc-test-stress.dir/build + +CMakeFiles/mimalloc-test-stress.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/mimalloc-test-stress.dir/cmake_clean.cmake +.PHONY : CMakeFiles/mimalloc-test-stress.dir/clean + +CMakeFiles/mimalloc-test-stress.dir/depend: + cd /home/aprokurov/Projects/mimalloc && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-test-stress.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/mimalloc-test-stress.dir/depend + diff --git a/CMakeFiles/mimalloc-test-stress.dir/cmake_clean.cmake b/CMakeFiles/mimalloc-test-stress.dir/cmake_clean.cmake new file mode 100644 index 00000000..d7ace702 --- /dev/null +++ b/CMakeFiles/mimalloc-test-stress.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +file(REMOVE_RECURSE + "CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.o" + "mimalloc-test-stress" + "mimalloc-test-stress.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mimalloc-test-stress.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/CMakeFiles/mimalloc-test-stress.dir/depend.internal b/CMakeFiles/mimalloc-test-stress.dir/depend.internal new file mode 100644 index 00000000..9a0efd1f --- /dev/null +++ b/CMakeFiles/mimalloc-test-stress.dir/depend.internal @@ -0,0 +1,6 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.o + /home/aprokurov/Projects/mimalloc/test/test-stress.c + include/mimalloc.h diff --git a/CMakeFiles/mimalloc-test-stress.dir/depend.make b/CMakeFiles/mimalloc-test-stress.dir/depend.make new file mode 100644 index 00000000..9365a2e5 --- /dev/null +++ b/CMakeFiles/mimalloc-test-stress.dir/depend.make @@ -0,0 +1,6 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.o: test/test-stress.c +CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.o: include/mimalloc.h + diff --git a/CMakeFiles/mimalloc-test-stress.dir/flags.make b/CMakeFiles/mimalloc-test-stress.dir/flags.make new file mode 100644 index 00000000..2692a039 --- /dev/null +++ b/CMakeFiles/mimalloc-test-stress.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +# compile C with /usr/bin/cc +C_DEFINES = + +C_INCLUDES = -I/home/aprokurov/Projects/mimalloc/include + +C_FLAGS = -O3 -DNDEBUG -Wall -Wextra -Wno-unknown-pragmas -fvisibility=hidden -Wno-invalid-memory-model -ftls-model=initial-exec -std=gnu11 + diff --git a/CMakeFiles/mimalloc-test-stress.dir/link.txt b/CMakeFiles/mimalloc-test-stress.dir/link.txt new file mode 100644 index 00000000..15383740 --- /dev/null +++ b/CMakeFiles/mimalloc-test-stress.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -O3 -DNDEBUG -rdynamic CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.o -o mimalloc-test-stress -Wl,-rpath,/home/aprokurov/Projects/mimalloc libmimalloc.so.1.7 -lpthread -lrt diff --git a/CMakeFiles/mimalloc-test-stress.dir/progress.make b/CMakeFiles/mimalloc-test-stress.dir/progress.make new file mode 100644 index 00000000..30c30911 --- /dev/null +++ b/CMakeFiles/mimalloc-test-stress.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 34 +CMAKE_PROGRESS_2 = 35 + diff --git a/CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.o b/CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.o new file mode 100644 index 00000000..1bf55857 Binary files /dev/null and b/CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.o differ diff --git a/CMakeFiles/mimalloc.dir/C.includecache b/CMakeFiles/mimalloc.dir/C.includecache new file mode 100644 index 00000000..1499bf1d --- /dev/null +++ b/CMakeFiles/mimalloc.dir/C.includecache @@ -0,0 +1,94 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/home/aprokurov/Projects/mimalloc/src/init.c +mimalloc.h +/home/aprokurov/Projects/mimalloc/src/mimalloc.h +mimalloc-internal.h +/home/aprokurov/Projects/mimalloc/src/mimalloc-internal.h +string.h +- +stdlib.h +- +Windows.h +- +fibersapi.h +- +pthread.h +- +intrin.h +- + +include/mimalloc-atomic.h +atomic +- +stdatomic.h +- +Windows.h +- +intrin.h +- +thread +- +windows.h +- +emmintrin.h +- +synch.h +- +sched.h +- +unistd.h +- + +include/mimalloc-internal.h +mimalloc-types.h +include/mimalloc-types.h +errno.h +- +limits.h +- +pthread.h +- +pthread.h +- +windows.h +- +limits.h +- +limits.h +- +intrin.h +- +string.h +- +string.h +- +string.h +- + +include/mimalloc-types.h +stddef.h +- +stdint.h +- +mimalloc-atomic.h +- + +include/mimalloc.h +stddef.h +- +stdbool.h +- +cstdint +- +type_traits +- +utility +- + diff --git a/CMakeFiles/mimalloc.dir/DependInfo.cmake b/CMakeFiles/mimalloc.dir/DependInfo.cmake new file mode 100644 index 00000000..5e7c8b07 --- /dev/null +++ b/CMakeFiles/mimalloc.dir/DependInfo.cmake @@ -0,0 +1,48 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_C + "/home/aprokurov/Projects/mimalloc/src/alloc-aligned.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o" + "/home/aprokurov/Projects/mimalloc/src/alloc-posix.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir/src/alloc-posix.c.o" + "/home/aprokurov/Projects/mimalloc/src/alloc.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir/src/alloc.c.o" + "/home/aprokurov/Projects/mimalloc/src/arena.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir/src/arena.c.o" + "/home/aprokurov/Projects/mimalloc/src/bitmap.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir/src/bitmap.c.o" + "/home/aprokurov/Projects/mimalloc/src/heap.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir/src/heap.c.o" + "/home/aprokurov/Projects/mimalloc/src/init.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir/src/init.c.o" + "/home/aprokurov/Projects/mimalloc/src/options.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir/src/options.c.o" + "/home/aprokurov/Projects/mimalloc/src/os.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir/src/os.c.o" + "/home/aprokurov/Projects/mimalloc/src/page.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir/src/page.c.o" + "/home/aprokurov/Projects/mimalloc/src/random.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir/src/random.c.o" + "/home/aprokurov/Projects/mimalloc/src/region.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir/src/region.c.o" + "/home/aprokurov/Projects/mimalloc/src/segment.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir/src/segment.c.o" + "/home/aprokurov/Projects/mimalloc/src/stats.c" "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir/src/stats.c.o" + ) +set(CMAKE_C_COMPILER_ID "GNU") + +# Preprocessor definitions for this target. +set(CMAKE_TARGET_DEFINITIONS_C + "MI_MALLOC_OVERRIDE" + "MI_SHARED_LIB" + "MI_SHARED_LIB_EXPORT" + "mimalloc_EXPORTS" + ) + +# The include file search paths: +set(CMAKE_C_TARGET_INCLUDE_PATH + "include" + ) + +# Pairs of files generated by the same build rule. +set(CMAKE_MULTIPLE_OUTPUT_PAIRS + "/home/aprokurov/Projects/mimalloc/libmimalloc.so" "/home/aprokurov/Projects/mimalloc/libmimalloc.so.1.7" + ) + + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/CMakeFiles/mimalloc.dir/build.make b/CMakeFiles/mimalloc.dir/build.make new file mode 100644 index 00000000..af2037a9 --- /dev/null +++ b/CMakeFiles/mimalloc.dir/build.make @@ -0,0 +1,317 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/aprokurov/Projects/mimalloc + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/aprokurov/Projects/mimalloc + +# Include any dependencies generated for this target. +include CMakeFiles/mimalloc.dir/depend.make + +# Include the progress variables for this target. +include CMakeFiles/mimalloc.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/mimalloc.dir/flags.make + +CMakeFiles/mimalloc.dir/src/stats.c.o: CMakeFiles/mimalloc.dir/flags.make +CMakeFiles/mimalloc.dir/src/stats.c.o: src/stats.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/mimalloc.dir/src/stats.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc.dir/src/stats.c.o -c /home/aprokurov/Projects/mimalloc/src/stats.c + +CMakeFiles/mimalloc.dir/src/stats.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc.dir/src/stats.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/stats.c > CMakeFiles/mimalloc.dir/src/stats.c.i + +CMakeFiles/mimalloc.dir/src/stats.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc.dir/src/stats.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/stats.c -o CMakeFiles/mimalloc.dir/src/stats.c.s + +CMakeFiles/mimalloc.dir/src/random.c.o: CMakeFiles/mimalloc.dir/flags.make +CMakeFiles/mimalloc.dir/src/random.c.o: src/random.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object CMakeFiles/mimalloc.dir/src/random.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc.dir/src/random.c.o -c /home/aprokurov/Projects/mimalloc/src/random.c + +CMakeFiles/mimalloc.dir/src/random.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc.dir/src/random.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/random.c > CMakeFiles/mimalloc.dir/src/random.c.i + +CMakeFiles/mimalloc.dir/src/random.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc.dir/src/random.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/random.c -o CMakeFiles/mimalloc.dir/src/random.c.s + +CMakeFiles/mimalloc.dir/src/os.c.o: CMakeFiles/mimalloc.dir/flags.make +CMakeFiles/mimalloc.dir/src/os.c.o: src/os.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object CMakeFiles/mimalloc.dir/src/os.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc.dir/src/os.c.o -c /home/aprokurov/Projects/mimalloc/src/os.c + +CMakeFiles/mimalloc.dir/src/os.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc.dir/src/os.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/os.c > CMakeFiles/mimalloc.dir/src/os.c.i + +CMakeFiles/mimalloc.dir/src/os.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc.dir/src/os.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/os.c -o CMakeFiles/mimalloc.dir/src/os.c.s + +CMakeFiles/mimalloc.dir/src/bitmap.c.o: CMakeFiles/mimalloc.dir/flags.make +CMakeFiles/mimalloc.dir/src/bitmap.c.o: src/bitmap.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building C object CMakeFiles/mimalloc.dir/src/bitmap.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc.dir/src/bitmap.c.o -c /home/aprokurov/Projects/mimalloc/src/bitmap.c + +CMakeFiles/mimalloc.dir/src/bitmap.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc.dir/src/bitmap.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/bitmap.c > CMakeFiles/mimalloc.dir/src/bitmap.c.i + +CMakeFiles/mimalloc.dir/src/bitmap.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc.dir/src/bitmap.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/bitmap.c -o CMakeFiles/mimalloc.dir/src/bitmap.c.s + +CMakeFiles/mimalloc.dir/src/arena.c.o: CMakeFiles/mimalloc.dir/flags.make +CMakeFiles/mimalloc.dir/src/arena.c.o: src/arena.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building C object CMakeFiles/mimalloc.dir/src/arena.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc.dir/src/arena.c.o -c /home/aprokurov/Projects/mimalloc/src/arena.c + +CMakeFiles/mimalloc.dir/src/arena.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc.dir/src/arena.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/arena.c > CMakeFiles/mimalloc.dir/src/arena.c.i + +CMakeFiles/mimalloc.dir/src/arena.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc.dir/src/arena.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/arena.c -o CMakeFiles/mimalloc.dir/src/arena.c.s + +CMakeFiles/mimalloc.dir/src/region.c.o: CMakeFiles/mimalloc.dir/flags.make +CMakeFiles/mimalloc.dir/src/region.c.o: src/region.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building C object CMakeFiles/mimalloc.dir/src/region.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc.dir/src/region.c.o -c /home/aprokurov/Projects/mimalloc/src/region.c + +CMakeFiles/mimalloc.dir/src/region.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc.dir/src/region.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/region.c > CMakeFiles/mimalloc.dir/src/region.c.i + +CMakeFiles/mimalloc.dir/src/region.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc.dir/src/region.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/region.c -o CMakeFiles/mimalloc.dir/src/region.c.s + +CMakeFiles/mimalloc.dir/src/segment.c.o: CMakeFiles/mimalloc.dir/flags.make +CMakeFiles/mimalloc.dir/src/segment.c.o: src/segment.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building C object CMakeFiles/mimalloc.dir/src/segment.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc.dir/src/segment.c.o -c /home/aprokurov/Projects/mimalloc/src/segment.c + +CMakeFiles/mimalloc.dir/src/segment.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc.dir/src/segment.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/segment.c > CMakeFiles/mimalloc.dir/src/segment.c.i + +CMakeFiles/mimalloc.dir/src/segment.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc.dir/src/segment.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/segment.c -o CMakeFiles/mimalloc.dir/src/segment.c.s + +CMakeFiles/mimalloc.dir/src/page.c.o: CMakeFiles/mimalloc.dir/flags.make +CMakeFiles/mimalloc.dir/src/page.c.o: src/page.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building C object CMakeFiles/mimalloc.dir/src/page.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc.dir/src/page.c.o -c /home/aprokurov/Projects/mimalloc/src/page.c + +CMakeFiles/mimalloc.dir/src/page.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc.dir/src/page.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/page.c > CMakeFiles/mimalloc.dir/src/page.c.i + +CMakeFiles/mimalloc.dir/src/page.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc.dir/src/page.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/page.c -o CMakeFiles/mimalloc.dir/src/page.c.s + +CMakeFiles/mimalloc.dir/src/alloc.c.o: CMakeFiles/mimalloc.dir/flags.make +CMakeFiles/mimalloc.dir/src/alloc.c.o: src/alloc.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building C object CMakeFiles/mimalloc.dir/src/alloc.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc.dir/src/alloc.c.o -c /home/aprokurov/Projects/mimalloc/src/alloc.c + +CMakeFiles/mimalloc.dir/src/alloc.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc.dir/src/alloc.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/alloc.c > CMakeFiles/mimalloc.dir/src/alloc.c.i + +CMakeFiles/mimalloc.dir/src/alloc.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc.dir/src/alloc.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/alloc.c -o CMakeFiles/mimalloc.dir/src/alloc.c.s + +CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o: CMakeFiles/mimalloc.dir/flags.make +CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o: src/alloc-aligned.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Building C object CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o -c /home/aprokurov/Projects/mimalloc/src/alloc-aligned.c + +CMakeFiles/mimalloc.dir/src/alloc-aligned.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc.dir/src/alloc-aligned.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/alloc-aligned.c > CMakeFiles/mimalloc.dir/src/alloc-aligned.c.i + +CMakeFiles/mimalloc.dir/src/alloc-aligned.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc.dir/src/alloc-aligned.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/alloc-aligned.c -o CMakeFiles/mimalloc.dir/src/alloc-aligned.c.s + +CMakeFiles/mimalloc.dir/src/alloc-posix.c.o: CMakeFiles/mimalloc.dir/flags.make +CMakeFiles/mimalloc.dir/src/alloc-posix.c.o: src/alloc-posix.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_11) "Building C object CMakeFiles/mimalloc.dir/src/alloc-posix.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc.dir/src/alloc-posix.c.o -c /home/aprokurov/Projects/mimalloc/src/alloc-posix.c + +CMakeFiles/mimalloc.dir/src/alloc-posix.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc.dir/src/alloc-posix.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/alloc-posix.c > CMakeFiles/mimalloc.dir/src/alloc-posix.c.i + +CMakeFiles/mimalloc.dir/src/alloc-posix.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc.dir/src/alloc-posix.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/alloc-posix.c -o CMakeFiles/mimalloc.dir/src/alloc-posix.c.s + +CMakeFiles/mimalloc.dir/src/heap.c.o: CMakeFiles/mimalloc.dir/flags.make +CMakeFiles/mimalloc.dir/src/heap.c.o: src/heap.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_12) "Building C object CMakeFiles/mimalloc.dir/src/heap.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc.dir/src/heap.c.o -c /home/aprokurov/Projects/mimalloc/src/heap.c + +CMakeFiles/mimalloc.dir/src/heap.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc.dir/src/heap.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/heap.c > CMakeFiles/mimalloc.dir/src/heap.c.i + +CMakeFiles/mimalloc.dir/src/heap.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc.dir/src/heap.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/heap.c -o CMakeFiles/mimalloc.dir/src/heap.c.s + +CMakeFiles/mimalloc.dir/src/options.c.o: CMakeFiles/mimalloc.dir/flags.make +CMakeFiles/mimalloc.dir/src/options.c.o: src/options.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_13) "Building C object CMakeFiles/mimalloc.dir/src/options.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc.dir/src/options.c.o -c /home/aprokurov/Projects/mimalloc/src/options.c + +CMakeFiles/mimalloc.dir/src/options.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc.dir/src/options.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/options.c > CMakeFiles/mimalloc.dir/src/options.c.i + +CMakeFiles/mimalloc.dir/src/options.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc.dir/src/options.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/options.c -o CMakeFiles/mimalloc.dir/src/options.c.s + +CMakeFiles/mimalloc.dir/src/init.c.o: CMakeFiles/mimalloc.dir/flags.make +CMakeFiles/mimalloc.dir/src/init.c.o: src/init.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_14) "Building C object CMakeFiles/mimalloc.dir/src/init.c.o" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/mimalloc.dir/src/init.c.o -c /home/aprokurov/Projects/mimalloc/src/init.c + +CMakeFiles/mimalloc.dir/src/init.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/mimalloc.dir/src/init.c.i" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/aprokurov/Projects/mimalloc/src/init.c > CMakeFiles/mimalloc.dir/src/init.c.i + +CMakeFiles/mimalloc.dir/src/init.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/mimalloc.dir/src/init.c.s" + /usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/aprokurov/Projects/mimalloc/src/init.c -o CMakeFiles/mimalloc.dir/src/init.c.s + +# Object files for target mimalloc +mimalloc_OBJECTS = \ +"CMakeFiles/mimalloc.dir/src/stats.c.o" \ +"CMakeFiles/mimalloc.dir/src/random.c.o" \ +"CMakeFiles/mimalloc.dir/src/os.c.o" \ +"CMakeFiles/mimalloc.dir/src/bitmap.c.o" \ +"CMakeFiles/mimalloc.dir/src/arena.c.o" \ +"CMakeFiles/mimalloc.dir/src/region.c.o" \ +"CMakeFiles/mimalloc.dir/src/segment.c.o" \ +"CMakeFiles/mimalloc.dir/src/page.c.o" \ +"CMakeFiles/mimalloc.dir/src/alloc.c.o" \ +"CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o" \ +"CMakeFiles/mimalloc.dir/src/alloc-posix.c.o" \ +"CMakeFiles/mimalloc.dir/src/heap.c.o" \ +"CMakeFiles/mimalloc.dir/src/options.c.o" \ +"CMakeFiles/mimalloc.dir/src/init.c.o" + +# External object files for target mimalloc +mimalloc_EXTERNAL_OBJECTS = + +libmimalloc.so.1.7: CMakeFiles/mimalloc.dir/src/stats.c.o +libmimalloc.so.1.7: CMakeFiles/mimalloc.dir/src/random.c.o +libmimalloc.so.1.7: CMakeFiles/mimalloc.dir/src/os.c.o +libmimalloc.so.1.7: CMakeFiles/mimalloc.dir/src/bitmap.c.o +libmimalloc.so.1.7: CMakeFiles/mimalloc.dir/src/arena.c.o +libmimalloc.so.1.7: CMakeFiles/mimalloc.dir/src/region.c.o +libmimalloc.so.1.7: CMakeFiles/mimalloc.dir/src/segment.c.o +libmimalloc.so.1.7: CMakeFiles/mimalloc.dir/src/page.c.o +libmimalloc.so.1.7: CMakeFiles/mimalloc.dir/src/alloc.c.o +libmimalloc.so.1.7: CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o +libmimalloc.so.1.7: CMakeFiles/mimalloc.dir/src/alloc-posix.c.o +libmimalloc.so.1.7: CMakeFiles/mimalloc.dir/src/heap.c.o +libmimalloc.so.1.7: CMakeFiles/mimalloc.dir/src/options.c.o +libmimalloc.so.1.7: CMakeFiles/mimalloc.dir/src/init.c.o +libmimalloc.so.1.7: CMakeFiles/mimalloc.dir/build.make +libmimalloc.so.1.7: /usr/lib/librt.so +libmimalloc.so.1.7: CMakeFiles/mimalloc.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/aprokurov/Projects/mimalloc/CMakeFiles --progress-num=$(CMAKE_PROGRESS_15) "Linking C shared library libmimalloc.so" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/mimalloc.dir/link.txt --verbose=$(VERBOSE) + $(CMAKE_COMMAND) -E cmake_symlink_library libmimalloc.so.1.7 libmimalloc.so.1.7 libmimalloc.so + +libmimalloc.so: libmimalloc.so.1.7 + @$(CMAKE_COMMAND) -E touch_nocreate libmimalloc.so + +# Rule to build all files generated by this target. +CMakeFiles/mimalloc.dir/build: libmimalloc.so + +.PHONY : CMakeFiles/mimalloc.dir/build + +CMakeFiles/mimalloc.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/mimalloc.dir/cmake_clean.cmake +.PHONY : CMakeFiles/mimalloc.dir/clean + +CMakeFiles/mimalloc.dir/depend: + cd /home/aprokurov/Projects/mimalloc && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc /home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/mimalloc.dir/depend + diff --git a/CMakeFiles/mimalloc.dir/cmake_clean.cmake b/CMakeFiles/mimalloc.dir/cmake_clean.cmake new file mode 100644 index 00000000..8f645035 --- /dev/null +++ b/CMakeFiles/mimalloc.dir/cmake_clean.cmake @@ -0,0 +1,24 @@ +file(REMOVE_RECURSE + "CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o" + "CMakeFiles/mimalloc.dir/src/alloc-posix.c.o" + "CMakeFiles/mimalloc.dir/src/alloc.c.o" + "CMakeFiles/mimalloc.dir/src/arena.c.o" + "CMakeFiles/mimalloc.dir/src/bitmap.c.o" + "CMakeFiles/mimalloc.dir/src/heap.c.o" + "CMakeFiles/mimalloc.dir/src/init.c.o" + "CMakeFiles/mimalloc.dir/src/options.c.o" + "CMakeFiles/mimalloc.dir/src/os.c.o" + "CMakeFiles/mimalloc.dir/src/page.c.o" + "CMakeFiles/mimalloc.dir/src/random.c.o" + "CMakeFiles/mimalloc.dir/src/region.c.o" + "CMakeFiles/mimalloc.dir/src/segment.c.o" + "CMakeFiles/mimalloc.dir/src/stats.c.o" + "libmimalloc.pdb" + "libmimalloc.so" + "libmimalloc.so.1.7" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/mimalloc.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/CMakeFiles/mimalloc.dir/depend.internal b/CMakeFiles/mimalloc.dir/depend.internal new file mode 100644 index 00000000..1cd8f98a --- /dev/null +++ b/CMakeFiles/mimalloc.dir/depend.internal @@ -0,0 +1,92 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o + /home/aprokurov/Projects/mimalloc/src/alloc-aligned.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc.dir/src/alloc-posix.c.o + /home/aprokurov/Projects/mimalloc/src/alloc-posix.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc.dir/src/alloc.c.o + /home/aprokurov/Projects/mimalloc/src/alloc-override.c + /home/aprokurov/Projects/mimalloc/src/alloc.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc.dir/src/arena.c.o + /home/aprokurov/Projects/mimalloc/src/arena.c + /home/aprokurov/Projects/mimalloc/src/bitmap.h + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc.dir/src/bitmap.c.o + /home/aprokurov/Projects/mimalloc/src/bitmap.c + /home/aprokurov/Projects/mimalloc/src/bitmap.h + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc.dir/src/heap.c.o + /home/aprokurov/Projects/mimalloc/src/heap.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc.dir/src/init.c.o + /home/aprokurov/Projects/mimalloc/src/init.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc.dir/src/options.c.o + /home/aprokurov/Projects/mimalloc/src/options.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc.dir/src/os.c.o + /home/aprokurov/Projects/mimalloc/src/os.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc.dir/src/page.c.o + /home/aprokurov/Projects/mimalloc/src/page-queue.c + /home/aprokurov/Projects/mimalloc/src/page.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc.dir/src/random.c.o + /home/aprokurov/Projects/mimalloc/src/random.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc.dir/src/region.c.o + /home/aprokurov/Projects/mimalloc/src/bitmap.h + /home/aprokurov/Projects/mimalloc/src/region.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc.dir/src/segment.c.o + /home/aprokurov/Projects/mimalloc/src/segment.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h +CMakeFiles/mimalloc.dir/src/stats.c.o + /home/aprokurov/Projects/mimalloc/src/stats.c + include/mimalloc-atomic.h + include/mimalloc-internal.h + include/mimalloc-types.h + include/mimalloc.h diff --git a/CMakeFiles/mimalloc.dir/depend.make b/CMakeFiles/mimalloc.dir/depend.make new file mode 100644 index 00000000..dd4d9203 --- /dev/null +++ b/CMakeFiles/mimalloc.dir/depend.make @@ -0,0 +1,92 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o: src/alloc-aligned.c +CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o: include/mimalloc.h + +CMakeFiles/mimalloc.dir/src/alloc-posix.c.o: src/alloc-posix.c +CMakeFiles/mimalloc.dir/src/alloc-posix.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc.dir/src/alloc-posix.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc.dir/src/alloc-posix.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc.dir/src/alloc-posix.c.o: include/mimalloc.h + +CMakeFiles/mimalloc.dir/src/alloc.c.o: src/alloc-override.c +CMakeFiles/mimalloc.dir/src/alloc.c.o: src/alloc.c +CMakeFiles/mimalloc.dir/src/alloc.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc.dir/src/alloc.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc.dir/src/alloc.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc.dir/src/alloc.c.o: include/mimalloc.h + +CMakeFiles/mimalloc.dir/src/arena.c.o: src/arena.c +CMakeFiles/mimalloc.dir/src/arena.c.o: src/bitmap.h +CMakeFiles/mimalloc.dir/src/arena.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc.dir/src/arena.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc.dir/src/arena.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc.dir/src/arena.c.o: include/mimalloc.h + +CMakeFiles/mimalloc.dir/src/bitmap.c.o: src/bitmap.c +CMakeFiles/mimalloc.dir/src/bitmap.c.o: src/bitmap.h +CMakeFiles/mimalloc.dir/src/bitmap.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc.dir/src/bitmap.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc.dir/src/bitmap.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc.dir/src/bitmap.c.o: include/mimalloc.h + +CMakeFiles/mimalloc.dir/src/heap.c.o: src/heap.c +CMakeFiles/mimalloc.dir/src/heap.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc.dir/src/heap.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc.dir/src/heap.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc.dir/src/heap.c.o: include/mimalloc.h + +CMakeFiles/mimalloc.dir/src/init.c.o: src/init.c +CMakeFiles/mimalloc.dir/src/init.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc.dir/src/init.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc.dir/src/init.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc.dir/src/init.c.o: include/mimalloc.h + +CMakeFiles/mimalloc.dir/src/options.c.o: src/options.c +CMakeFiles/mimalloc.dir/src/options.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc.dir/src/options.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc.dir/src/options.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc.dir/src/options.c.o: include/mimalloc.h + +CMakeFiles/mimalloc.dir/src/os.c.o: src/os.c +CMakeFiles/mimalloc.dir/src/os.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc.dir/src/os.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc.dir/src/os.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc.dir/src/os.c.o: include/mimalloc.h + +CMakeFiles/mimalloc.dir/src/page.c.o: src/page-queue.c +CMakeFiles/mimalloc.dir/src/page.c.o: src/page.c +CMakeFiles/mimalloc.dir/src/page.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc.dir/src/page.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc.dir/src/page.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc.dir/src/page.c.o: include/mimalloc.h + +CMakeFiles/mimalloc.dir/src/random.c.o: src/random.c +CMakeFiles/mimalloc.dir/src/random.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc.dir/src/random.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc.dir/src/random.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc.dir/src/random.c.o: include/mimalloc.h + +CMakeFiles/mimalloc.dir/src/region.c.o: src/bitmap.h +CMakeFiles/mimalloc.dir/src/region.c.o: src/region.c +CMakeFiles/mimalloc.dir/src/region.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc.dir/src/region.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc.dir/src/region.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc.dir/src/region.c.o: include/mimalloc.h + +CMakeFiles/mimalloc.dir/src/segment.c.o: src/segment.c +CMakeFiles/mimalloc.dir/src/segment.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc.dir/src/segment.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc.dir/src/segment.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc.dir/src/segment.c.o: include/mimalloc.h + +CMakeFiles/mimalloc.dir/src/stats.c.o: src/stats.c +CMakeFiles/mimalloc.dir/src/stats.c.o: include/mimalloc-atomic.h +CMakeFiles/mimalloc.dir/src/stats.c.o: include/mimalloc-internal.h +CMakeFiles/mimalloc.dir/src/stats.c.o: include/mimalloc-types.h +CMakeFiles/mimalloc.dir/src/stats.c.o: include/mimalloc.h + diff --git a/CMakeFiles/mimalloc.dir/flags.make b/CMakeFiles/mimalloc.dir/flags.make new file mode 100644 index 00000000..7513d4c2 --- /dev/null +++ b/CMakeFiles/mimalloc.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +# compile C with /usr/bin/cc +C_DEFINES = -DMI_MALLOC_OVERRIDE -DMI_SHARED_LIB -DMI_SHARED_LIB_EXPORT -Dmimalloc_EXPORTS + +C_INCLUDES = -I/home/aprokurov/Projects/mimalloc/include + +C_FLAGS = -O3 -DNDEBUG -fPIC -Wall -Wextra -Wno-unknown-pragmas -fvisibility=hidden -Wno-invalid-memory-model -ftls-model=initial-exec -std=gnu11 + diff --git a/CMakeFiles/mimalloc.dir/link.txt b/CMakeFiles/mimalloc.dir/link.txt new file mode 100644 index 00000000..82a53095 --- /dev/null +++ b/CMakeFiles/mimalloc.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/cc -fPIC -O3 -DNDEBUG -shared -Wl,-soname,libmimalloc.so.1.7 -o libmimalloc.so.1.7 CMakeFiles/mimalloc.dir/src/stats.c.o CMakeFiles/mimalloc.dir/src/random.c.o CMakeFiles/mimalloc.dir/src/os.c.o CMakeFiles/mimalloc.dir/src/bitmap.c.o CMakeFiles/mimalloc.dir/src/arena.c.o CMakeFiles/mimalloc.dir/src/region.c.o CMakeFiles/mimalloc.dir/src/segment.c.o CMakeFiles/mimalloc.dir/src/page.c.o CMakeFiles/mimalloc.dir/src/alloc.c.o CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o CMakeFiles/mimalloc.dir/src/alloc-posix.c.o CMakeFiles/mimalloc.dir/src/heap.c.o CMakeFiles/mimalloc.dir/src/options.c.o CMakeFiles/mimalloc.dir/src/init.c.o -lpthread -lrt diff --git a/CMakeFiles/mimalloc.dir/progress.make b/CMakeFiles/mimalloc.dir/progress.make new file mode 100644 index 00000000..10293660 --- /dev/null +++ b/CMakeFiles/mimalloc.dir/progress.make @@ -0,0 +1,16 @@ +CMAKE_PROGRESS_1 = 1 +CMAKE_PROGRESS_2 = 2 +CMAKE_PROGRESS_3 = 3 +CMAKE_PROGRESS_4 = 4 +CMAKE_PROGRESS_5 = 5 +CMAKE_PROGRESS_6 = 6 +CMAKE_PROGRESS_7 = 7 +CMAKE_PROGRESS_8 = 8 +CMAKE_PROGRESS_9 = 9 +CMAKE_PROGRESS_10 = 10 +CMAKE_PROGRESS_11 = 11 +CMAKE_PROGRESS_12 = 12 +CMAKE_PROGRESS_13 = 13 +CMAKE_PROGRESS_14 = 14 +CMAKE_PROGRESS_15 = 15 + diff --git a/CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o b/CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o new file mode 100644 index 00000000..1a3df180 Binary files /dev/null and b/CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o differ diff --git a/CMakeFiles/mimalloc.dir/src/alloc-posix.c.o b/CMakeFiles/mimalloc.dir/src/alloc-posix.c.o new file mode 100644 index 00000000..97d23f26 Binary files /dev/null and b/CMakeFiles/mimalloc.dir/src/alloc-posix.c.o differ diff --git a/CMakeFiles/mimalloc.dir/src/alloc.c.o b/CMakeFiles/mimalloc.dir/src/alloc.c.o new file mode 100644 index 00000000..cf6af9e8 Binary files /dev/null and b/CMakeFiles/mimalloc.dir/src/alloc.c.o differ diff --git a/CMakeFiles/mimalloc.dir/src/arena.c.o b/CMakeFiles/mimalloc.dir/src/arena.c.o new file mode 100644 index 00000000..2959ec80 Binary files /dev/null and b/CMakeFiles/mimalloc.dir/src/arena.c.o differ diff --git a/CMakeFiles/mimalloc.dir/src/bitmap.c.o b/CMakeFiles/mimalloc.dir/src/bitmap.c.o new file mode 100644 index 00000000..692771d3 Binary files /dev/null and b/CMakeFiles/mimalloc.dir/src/bitmap.c.o differ diff --git a/CMakeFiles/mimalloc.dir/src/heap.c.o b/CMakeFiles/mimalloc.dir/src/heap.c.o new file mode 100644 index 00000000..bd1d5a8a Binary files /dev/null and b/CMakeFiles/mimalloc.dir/src/heap.c.o differ diff --git a/CMakeFiles/mimalloc.dir/src/init.c.o b/CMakeFiles/mimalloc.dir/src/init.c.o new file mode 100644 index 00000000..fdbbea74 Binary files /dev/null and b/CMakeFiles/mimalloc.dir/src/init.c.o differ diff --git a/CMakeFiles/mimalloc.dir/src/options.c.o b/CMakeFiles/mimalloc.dir/src/options.c.o new file mode 100644 index 00000000..e7794165 Binary files /dev/null and b/CMakeFiles/mimalloc.dir/src/options.c.o differ diff --git a/CMakeFiles/mimalloc.dir/src/os.c.o b/CMakeFiles/mimalloc.dir/src/os.c.o new file mode 100644 index 00000000..98cf2284 Binary files /dev/null and b/CMakeFiles/mimalloc.dir/src/os.c.o differ diff --git a/CMakeFiles/mimalloc.dir/src/page.c.o b/CMakeFiles/mimalloc.dir/src/page.c.o new file mode 100644 index 00000000..f890b823 Binary files /dev/null and b/CMakeFiles/mimalloc.dir/src/page.c.o differ diff --git a/CMakeFiles/mimalloc.dir/src/random.c.o b/CMakeFiles/mimalloc.dir/src/random.c.o new file mode 100644 index 00000000..3c1fa658 Binary files /dev/null and b/CMakeFiles/mimalloc.dir/src/random.c.o differ diff --git a/CMakeFiles/mimalloc.dir/src/region.c.o b/CMakeFiles/mimalloc.dir/src/region.c.o new file mode 100644 index 00000000..cadc665c Binary files /dev/null and b/CMakeFiles/mimalloc.dir/src/region.c.o differ diff --git a/CMakeFiles/mimalloc.dir/src/segment.c.o b/CMakeFiles/mimalloc.dir/src/segment.c.o new file mode 100644 index 00000000..b5f773ae Binary files /dev/null and b/CMakeFiles/mimalloc.dir/src/segment.c.o differ diff --git a/CMakeFiles/mimalloc.dir/src/stats.c.o b/CMakeFiles/mimalloc.dir/src/stats.c.o new file mode 100644 index 00000000..510052b3 Binary files /dev/null and b/CMakeFiles/mimalloc.dir/src/stats.c.o differ diff --git a/CMakeFiles/progress.marks b/CMakeFiles/progress.marks new file mode 100644 index 00000000..8f92bfdd --- /dev/null +++ b/CMakeFiles/progress.marks @@ -0,0 +1 @@ +35 diff --git a/CTestTestfile.cmake b/CTestTestfile.cmake new file mode 100644 index 00000000..a7581aa0 --- /dev/null +++ b/CTestTestfile.cmake @@ -0,0 +1,10 @@ +# CMake generated Testfile for +# Source directory: /home/aprokurov/Projects/mimalloc +# Build directory: /home/aprokurov/Projects/mimalloc +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +add_test(test_api, "mimalloc-test-api") +set_tests_properties(test_api, PROPERTIES _BACKTRACE_TRIPLES "/home/aprokurov/Projects/mimalloc/CMakeLists.txt;370;add_test;/home/aprokurov/Projects/mimalloc/CMakeLists.txt;0;") +add_test(test_stress, "mimalloc-test-stress") +set_tests_properties(test_stress, PROPERTIES _BACKTRACE_TRIPLES "/home/aprokurov/Projects/mimalloc/CMakeLists.txt;371;add_test;/home/aprokurov/Projects/mimalloc/CMakeLists.txt;0;") diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..8236aaa2 --- /dev/null +++ b/Makefile @@ -0,0 +1,837 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.19 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/aprokurov/Projects/mimalloc + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/aprokurov/Projects/mimalloc + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." + /usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/aprokurov/Projects/mimalloc/CMakeFiles /home/aprokurov/Projects/mimalloc//CMakeFiles/progress.marks + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /home/aprokurov/Projects/mimalloc/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named mimalloc-test-stress + +# Build rule for target. +mimalloc-test-stress: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mimalloc-test-stress +.PHONY : mimalloc-test-stress + +# fast build rule for target. +mimalloc-test-stress/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-test-stress.dir/build.make CMakeFiles/mimalloc-test-stress.dir/build +.PHONY : mimalloc-test-stress/fast + +#============================================================================= +# Target rules for targets named mimalloc-obj + +# Build rule for target. +mimalloc-obj: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mimalloc-obj +.PHONY : mimalloc-obj + +# fast build rule for target. +mimalloc-obj/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-obj.dir/build.make CMakeFiles/mimalloc-obj.dir/build +.PHONY : mimalloc-obj/fast + +#============================================================================= +# Target rules for targets named mimalloc-static + +# Build rule for target. +mimalloc-static: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mimalloc-static +.PHONY : mimalloc-static + +# fast build rule for target. +mimalloc-static/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/build +.PHONY : mimalloc-static/fast + +#============================================================================= +# Target rules for targets named mimalloc-test-api + +# Build rule for target. +mimalloc-test-api: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mimalloc-test-api +.PHONY : mimalloc-test-api + +# fast build rule for target. +mimalloc-test-api/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-test-api.dir/build.make CMakeFiles/mimalloc-test-api.dir/build +.PHONY : mimalloc-test-api/fast + +#============================================================================= +# Target rules for targets named mimalloc + +# Build rule for target. +mimalloc: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 mimalloc +.PHONY : mimalloc + +# fast build rule for target. +mimalloc/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/build +.PHONY : mimalloc/fast + +src/alloc-aligned.o: src/alloc-aligned.c.o + +.PHONY : src/alloc-aligned.o + +# target to build an object file +src/alloc-aligned.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/alloc-aligned.c.o +.PHONY : src/alloc-aligned.c.o + +src/alloc-aligned.i: src/alloc-aligned.c.i + +.PHONY : src/alloc-aligned.i + +# target to preprocess a source file +src/alloc-aligned.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/alloc-aligned.c.i +.PHONY : src/alloc-aligned.c.i + +src/alloc-aligned.s: src/alloc-aligned.c.s + +.PHONY : src/alloc-aligned.s + +# target to generate assembly for a file +src/alloc-aligned.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/alloc-aligned.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/alloc-aligned.c.s +.PHONY : src/alloc-aligned.c.s + +src/alloc-posix.o: src/alloc-posix.c.o + +.PHONY : src/alloc-posix.o + +# target to build an object file +src/alloc-posix.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/alloc-posix.c.o +.PHONY : src/alloc-posix.c.o + +src/alloc-posix.i: src/alloc-posix.c.i + +.PHONY : src/alloc-posix.i + +# target to preprocess a source file +src/alloc-posix.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/alloc-posix.c.i +.PHONY : src/alloc-posix.c.i + +src/alloc-posix.s: src/alloc-posix.c.s + +.PHONY : src/alloc-posix.s + +# target to generate assembly for a file +src/alloc-posix.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/alloc-posix.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/alloc-posix.c.s +.PHONY : src/alloc-posix.c.s + +src/alloc.o: src/alloc.c.o + +.PHONY : src/alloc.o + +# target to build an object file +src/alloc.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/alloc.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/alloc.c.o +.PHONY : src/alloc.c.o + +src/alloc.i: src/alloc.c.i + +.PHONY : src/alloc.i + +# target to preprocess a source file +src/alloc.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/alloc.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/alloc.c.i +.PHONY : src/alloc.c.i + +src/alloc.s: src/alloc.c.s + +.PHONY : src/alloc.s + +# target to generate assembly for a file +src/alloc.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/alloc.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/alloc.c.s +.PHONY : src/alloc.c.s + +src/arena.o: src/arena.c.o + +.PHONY : src/arena.o + +# target to build an object file +src/arena.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/arena.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/arena.c.o +.PHONY : src/arena.c.o + +src/arena.i: src/arena.c.i + +.PHONY : src/arena.i + +# target to preprocess a source file +src/arena.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/arena.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/arena.c.i +.PHONY : src/arena.c.i + +src/arena.s: src/arena.c.s + +.PHONY : src/arena.s + +# target to generate assembly for a file +src/arena.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/arena.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/arena.c.s +.PHONY : src/arena.c.s + +src/bitmap.o: src/bitmap.c.o + +.PHONY : src/bitmap.o + +# target to build an object file +src/bitmap.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/bitmap.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/bitmap.c.o +.PHONY : src/bitmap.c.o + +src/bitmap.i: src/bitmap.c.i + +.PHONY : src/bitmap.i + +# target to preprocess a source file +src/bitmap.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/bitmap.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/bitmap.c.i +.PHONY : src/bitmap.c.i + +src/bitmap.s: src/bitmap.c.s + +.PHONY : src/bitmap.s + +# target to generate assembly for a file +src/bitmap.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/bitmap.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/bitmap.c.s +.PHONY : src/bitmap.c.s + +src/heap.o: src/heap.c.o + +.PHONY : src/heap.o + +# target to build an object file +src/heap.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/heap.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/heap.c.o +.PHONY : src/heap.c.o + +src/heap.i: src/heap.c.i + +.PHONY : src/heap.i + +# target to preprocess a source file +src/heap.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/heap.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/heap.c.i +.PHONY : src/heap.c.i + +src/heap.s: src/heap.c.s + +.PHONY : src/heap.s + +# target to generate assembly for a file +src/heap.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/heap.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/heap.c.s +.PHONY : src/heap.c.s + +src/init.o: src/init.c.o + +.PHONY : src/init.o + +# target to build an object file +src/init.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/init.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/init.c.o +.PHONY : src/init.c.o + +src/init.i: src/init.c.i + +.PHONY : src/init.i + +# target to preprocess a source file +src/init.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/init.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/init.c.i +.PHONY : src/init.c.i + +src/init.s: src/init.c.s + +.PHONY : src/init.s + +# target to generate assembly for a file +src/init.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/init.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/init.c.s +.PHONY : src/init.c.s + +src/options.o: src/options.c.o + +.PHONY : src/options.o + +# target to build an object file +src/options.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/options.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/options.c.o +.PHONY : src/options.c.o + +src/options.i: src/options.c.i + +.PHONY : src/options.i + +# target to preprocess a source file +src/options.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/options.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/options.c.i +.PHONY : src/options.c.i + +src/options.s: src/options.c.s + +.PHONY : src/options.s + +# target to generate assembly for a file +src/options.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/options.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/options.c.s +.PHONY : src/options.c.s + +src/os.o: src/os.c.o + +.PHONY : src/os.o + +# target to build an object file +src/os.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/os.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/os.c.o +.PHONY : src/os.c.o + +src/os.i: src/os.c.i + +.PHONY : src/os.i + +# target to preprocess a source file +src/os.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/os.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/os.c.i +.PHONY : src/os.c.i + +src/os.s: src/os.c.s + +.PHONY : src/os.s + +# target to generate assembly for a file +src/os.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/os.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/os.c.s +.PHONY : src/os.c.s + +src/page.o: src/page.c.o + +.PHONY : src/page.o + +# target to build an object file +src/page.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/page.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/page.c.o +.PHONY : src/page.c.o + +src/page.i: src/page.c.i + +.PHONY : src/page.i + +# target to preprocess a source file +src/page.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/page.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/page.c.i +.PHONY : src/page.c.i + +src/page.s: src/page.c.s + +.PHONY : src/page.s + +# target to generate assembly for a file +src/page.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/page.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/page.c.s +.PHONY : src/page.c.s + +src/random.o: src/random.c.o + +.PHONY : src/random.o + +# target to build an object file +src/random.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/random.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/random.c.o +.PHONY : src/random.c.o + +src/random.i: src/random.c.i + +.PHONY : src/random.i + +# target to preprocess a source file +src/random.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/random.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/random.c.i +.PHONY : src/random.c.i + +src/random.s: src/random.c.s + +.PHONY : src/random.s + +# target to generate assembly for a file +src/random.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/random.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/random.c.s +.PHONY : src/random.c.s + +src/region.o: src/region.c.o + +.PHONY : src/region.o + +# target to build an object file +src/region.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/region.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/region.c.o +.PHONY : src/region.c.o + +src/region.i: src/region.c.i + +.PHONY : src/region.i + +# target to preprocess a source file +src/region.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/region.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/region.c.i +.PHONY : src/region.c.i + +src/region.s: src/region.c.s + +.PHONY : src/region.s + +# target to generate assembly for a file +src/region.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/region.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/region.c.s +.PHONY : src/region.c.s + +src/segment.o: src/segment.c.o + +.PHONY : src/segment.o + +# target to build an object file +src/segment.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/segment.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/segment.c.o +.PHONY : src/segment.c.o + +src/segment.i: src/segment.c.i + +.PHONY : src/segment.i + +# target to preprocess a source file +src/segment.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/segment.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/segment.c.i +.PHONY : src/segment.c.i + +src/segment.s: src/segment.c.s + +.PHONY : src/segment.s + +# target to generate assembly for a file +src/segment.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/segment.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/segment.c.s +.PHONY : src/segment.c.s + +src/static.o: src/static.c.o + +.PHONY : src/static.o + +# target to build an object file +src/static.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-obj.dir/build.make CMakeFiles/mimalloc-obj.dir/src/static.c.o +.PHONY : src/static.c.o + +src/static.i: src/static.c.i + +.PHONY : src/static.i + +# target to preprocess a source file +src/static.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-obj.dir/build.make CMakeFiles/mimalloc-obj.dir/src/static.c.i +.PHONY : src/static.c.i + +src/static.s: src/static.c.s + +.PHONY : src/static.s + +# target to generate assembly for a file +src/static.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-obj.dir/build.make CMakeFiles/mimalloc-obj.dir/src/static.c.s +.PHONY : src/static.c.s + +src/stats.o: src/stats.c.o + +.PHONY : src/stats.o + +# target to build an object file +src/stats.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/stats.c.o + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/stats.c.o +.PHONY : src/stats.c.o + +src/stats.i: src/stats.c.i + +.PHONY : src/stats.i + +# target to preprocess a source file +src/stats.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/stats.c.i + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/stats.c.i +.PHONY : src/stats.c.i + +src/stats.s: src/stats.c.s + +.PHONY : src/stats.s + +# target to generate assembly for a file +src/stats.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-static.dir/build.make CMakeFiles/mimalloc-static.dir/src/stats.c.s + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc.dir/build.make CMakeFiles/mimalloc.dir/src/stats.c.s +.PHONY : src/stats.c.s + +test/test-api.o: test/test-api.c.o + +.PHONY : test/test-api.o + +# target to build an object file +test/test-api.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-test-api.dir/build.make CMakeFiles/mimalloc-test-api.dir/test/test-api.c.o +.PHONY : test/test-api.c.o + +test/test-api.i: test/test-api.c.i + +.PHONY : test/test-api.i + +# target to preprocess a source file +test/test-api.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-test-api.dir/build.make CMakeFiles/mimalloc-test-api.dir/test/test-api.c.i +.PHONY : test/test-api.c.i + +test/test-api.s: test/test-api.c.s + +.PHONY : test/test-api.s + +# target to generate assembly for a file +test/test-api.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-test-api.dir/build.make CMakeFiles/mimalloc-test-api.dir/test/test-api.c.s +.PHONY : test/test-api.c.s + +test/test-stress.o: test/test-stress.c.o + +.PHONY : test/test-stress.o + +# target to build an object file +test/test-stress.c.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-test-stress.dir/build.make CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.o +.PHONY : test/test-stress.c.o + +test/test-stress.i: test/test-stress.c.i + +.PHONY : test/test-stress.i + +# target to preprocess a source file +test/test-stress.c.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-test-stress.dir/build.make CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.i +.PHONY : test/test-stress.c.i + +test/test-stress.s: test/test-stress.c.s + +.PHONY : test/test-stress.s + +# target to generate assembly for a file +test/test-stress.c.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/mimalloc-test-stress.dir/build.make CMakeFiles/mimalloc-test-stress.dir/test/test-stress.c.s +.PHONY : test/test-stress.c.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... test" + @echo "... mimalloc" + @echo "... mimalloc-obj" + @echo "... mimalloc-static" + @echo "... mimalloc-test-api" + @echo "... mimalloc-test-stress" + @echo "... src/alloc-aligned.o" + @echo "... src/alloc-aligned.i" + @echo "... src/alloc-aligned.s" + @echo "... src/alloc-posix.o" + @echo "... src/alloc-posix.i" + @echo "... src/alloc-posix.s" + @echo "... src/alloc.o" + @echo "... src/alloc.i" + @echo "... src/alloc.s" + @echo "... src/arena.o" + @echo "... src/arena.i" + @echo "... src/arena.s" + @echo "... src/bitmap.o" + @echo "... src/bitmap.i" + @echo "... src/bitmap.s" + @echo "... src/heap.o" + @echo "... src/heap.i" + @echo "... src/heap.s" + @echo "... src/init.o" + @echo "... src/init.i" + @echo "... src/init.s" + @echo "... src/options.o" + @echo "... src/options.i" + @echo "... src/options.s" + @echo "... src/os.o" + @echo "... src/os.i" + @echo "... src/os.s" + @echo "... src/page.o" + @echo "... src/page.i" + @echo "... src/page.s" + @echo "... src/random.o" + @echo "... src/random.i" + @echo "... src/random.s" + @echo "... src/region.o" + @echo "... src/region.i" + @echo "... src/region.s" + @echo "... src/segment.o" + @echo "... src/segment.i" + @echo "... src/segment.s" + @echo "... src/static.o" + @echo "... src/static.i" + @echo "... src/static.s" + @echo "... src/stats.o" + @echo "... src/stats.i" + @echo "... src/stats.s" + @echo "... test/test-api.o" + @echo "... test/test-api.i" + @echo "... test/test-api.s" + @echo "... test/test-stress.o" + @echo "... test/test-stress.i" + @echo "... test/test-stress.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/cmake_install.cmake b/cmake_install.cmake new file mode 100644 index 00000000..7902ecbc --- /dev/null +++ b/cmake_install.cmake @@ -0,0 +1,229 @@ +# Install script for directory: /home/aprokurov/Projects/mimalloc + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "0") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + if(EXISTS "$ENV{DESTDIR}/usr/local/lib/mimalloc-1.7/libmimalloc.so.1.7" AND + NOT IS_SYMLINK "$ENV{DESTDIR}/usr/local/lib/mimalloc-1.7/libmimalloc.so.1.7") + file(RPATH_CHECK + FILE "$ENV{DESTDIR}/usr/local/lib/mimalloc-1.7/libmimalloc.so.1.7" + RPATH "") + endif() + list(APPEND CMAKE_ABSOLUTE_DESTINATION_FILES + "/usr/local/lib/mimalloc-1.7/libmimalloc.so.1.7") + if(CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION) + message(WARNING "ABSOLUTE path INSTALL DESTINATION : ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() + if(CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION) + message(FATAL_ERROR "ABSOLUTE path INSTALL DESTINATION forbidden (by caller): ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() +file(INSTALL DESTINATION "/usr/local/lib/mimalloc-1.7" TYPE SHARED_LIBRARY FILES "/home/aprokurov/Projects/mimalloc/libmimalloc.so.1.7") + if(EXISTS "$ENV{DESTDIR}/usr/local/lib/mimalloc-1.7/libmimalloc.so.1.7" AND + NOT IS_SYMLINK "$ENV{DESTDIR}/usr/local/lib/mimalloc-1.7/libmimalloc.so.1.7") + if(CMAKE_INSTALL_DO_STRIP) + execute_process(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}/usr/local/lib/mimalloc-1.7/libmimalloc.so.1.7") + endif() + endif() +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + if(EXISTS "$ENV{DESTDIR}/usr/local/lib/mimalloc-1.7/libmimalloc.so" AND + NOT IS_SYMLINK "$ENV{DESTDIR}/usr/local/lib/mimalloc-1.7/libmimalloc.so") + file(RPATH_CHECK + FILE "$ENV{DESTDIR}/usr/local/lib/mimalloc-1.7/libmimalloc.so" + RPATH "") + endif() + list(APPEND CMAKE_ABSOLUTE_DESTINATION_FILES + "/usr/local/lib/mimalloc-1.7/libmimalloc.so") + if(CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION) + message(WARNING "ABSOLUTE path INSTALL DESTINATION : ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() + if(CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION) + message(FATAL_ERROR "ABSOLUTE path INSTALL DESTINATION forbidden (by caller): ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() +file(INSTALL DESTINATION "/usr/local/lib/mimalloc-1.7" TYPE SHARED_LIBRARY FILES "/home/aprokurov/Projects/mimalloc/libmimalloc.so") + if(EXISTS "$ENV{DESTDIR}/usr/local/lib/mimalloc-1.7/libmimalloc.so" AND + NOT IS_SYMLINK "$ENV{DESTDIR}/usr/local/lib/mimalloc-1.7/libmimalloc.so") + if(CMAKE_INSTALL_DO_STRIP) + execute_process(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}/usr/local/lib/mimalloc-1.7/libmimalloc.so") + endif() + endif() +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + if(EXISTS "$ENV{DESTDIR}/usr/local/lib/mimalloc-1.7/cmake/mimalloc.cmake") + file(DIFFERENT EXPORT_FILE_CHANGED FILES + "$ENV{DESTDIR}/usr/local/lib/mimalloc-1.7/cmake/mimalloc.cmake" + "/home/aprokurov/Projects/mimalloc/CMakeFiles/Export/_usr/local/lib/mimalloc-1.7/cmake/mimalloc.cmake") + if(EXPORT_FILE_CHANGED) + file(GLOB OLD_CONFIG_FILES "$ENV{DESTDIR}/usr/local/lib/mimalloc-1.7/cmake/mimalloc-*.cmake") + if(OLD_CONFIG_FILES) + message(STATUS "Old export file \"$ENV{DESTDIR}/usr/local/lib/mimalloc-1.7/cmake/mimalloc.cmake\" will be replaced. Removing files [${OLD_CONFIG_FILES}].") + file(REMOVE ${OLD_CONFIG_FILES}) + endif() + endif() + endif() + list(APPEND CMAKE_ABSOLUTE_DESTINATION_FILES + "/usr/local/lib/mimalloc-1.7/cmake/mimalloc.cmake") + if(CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION) + message(WARNING "ABSOLUTE path INSTALL DESTINATION : ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() + if(CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION) + message(FATAL_ERROR "ABSOLUTE path INSTALL DESTINATION forbidden (by caller): ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() +file(INSTALL DESTINATION "/usr/local/lib/mimalloc-1.7/cmake" TYPE FILE FILES "/home/aprokurov/Projects/mimalloc/CMakeFiles/Export/_usr/local/lib/mimalloc-1.7/cmake/mimalloc.cmake") + if("${CMAKE_INSTALL_CONFIG_NAME}" MATCHES "^([Rr][Ee][Ll][Ee][Aa][Ss][Ee])$") + list(APPEND CMAKE_ABSOLUTE_DESTINATION_FILES + "/usr/local/lib/mimalloc-1.7/cmake/mimalloc-release.cmake") + if(CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION) + message(WARNING "ABSOLUTE path INSTALL DESTINATION : ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() + if(CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION) + message(FATAL_ERROR "ABSOLUTE path INSTALL DESTINATION forbidden (by caller): ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() +file(INSTALL DESTINATION "/usr/local/lib/mimalloc-1.7/cmake" TYPE FILE FILES "/home/aprokurov/Projects/mimalloc/CMakeFiles/Export/_usr/local/lib/mimalloc-1.7/cmake/mimalloc-release.cmake") + endif() +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + list(APPEND CMAKE_ABSOLUTE_DESTINATION_FILES + "/usr/local/lib/mimalloc-1.7/libmimalloc.a") + if(CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION) + message(WARNING "ABSOLUTE path INSTALL DESTINATION : ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() + if(CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION) + message(FATAL_ERROR "ABSOLUTE path INSTALL DESTINATION forbidden (by caller): ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() +file(INSTALL DESTINATION "/usr/local/lib/mimalloc-1.7" TYPE STATIC_LIBRARY FILES "/home/aprokurov/Projects/mimalloc/libmimalloc.a") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + list(APPEND CMAKE_ABSOLUTE_DESTINATION_FILES + "/usr/local/lib/mimalloc-1.7/include/mimalloc.h") + if(CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION) + message(WARNING "ABSOLUTE path INSTALL DESTINATION : ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() + if(CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION) + message(FATAL_ERROR "ABSOLUTE path INSTALL DESTINATION forbidden (by caller): ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() +file(INSTALL DESTINATION "/usr/local/lib/mimalloc-1.7/include" TYPE FILE FILES "/home/aprokurov/Projects/mimalloc/include/mimalloc.h") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + list(APPEND CMAKE_ABSOLUTE_DESTINATION_FILES + "/usr/local/lib/mimalloc-1.7/include/mimalloc-override.h") + if(CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION) + message(WARNING "ABSOLUTE path INSTALL DESTINATION : ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() + if(CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION) + message(FATAL_ERROR "ABSOLUTE path INSTALL DESTINATION forbidden (by caller): ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() +file(INSTALL DESTINATION "/usr/local/lib/mimalloc-1.7/include" TYPE FILE FILES "/home/aprokurov/Projects/mimalloc/include/mimalloc-override.h") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + list(APPEND CMAKE_ABSOLUTE_DESTINATION_FILES + "/usr/local/lib/mimalloc-1.7/include/mimalloc-new-delete.h") + if(CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION) + message(WARNING "ABSOLUTE path INSTALL DESTINATION : ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() + if(CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION) + message(FATAL_ERROR "ABSOLUTE path INSTALL DESTINATION forbidden (by caller): ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() +file(INSTALL DESTINATION "/usr/local/lib/mimalloc-1.7/include" TYPE FILE FILES "/home/aprokurov/Projects/mimalloc/include/mimalloc-new-delete.h") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + list(APPEND CMAKE_ABSOLUTE_DESTINATION_FILES + "/usr/local/lib/mimalloc-1.7/cmake/mimalloc-config.cmake") + if(CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION) + message(WARNING "ABSOLUTE path INSTALL DESTINATION : ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() + if(CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION) + message(FATAL_ERROR "ABSOLUTE path INSTALL DESTINATION forbidden (by caller): ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() +file(INSTALL DESTINATION "/usr/local/lib/mimalloc-1.7/cmake" TYPE FILE FILES "/home/aprokurov/Projects/mimalloc/cmake/mimalloc-config.cmake") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + list(APPEND CMAKE_ABSOLUTE_DESTINATION_FILES + "/usr/local/lib/mimalloc-1.7/cmake/mimalloc-config-version.cmake") + if(CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION) + message(WARNING "ABSOLUTE path INSTALL DESTINATION : ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() + if(CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION) + message(FATAL_ERROR "ABSOLUTE path INSTALL DESTINATION forbidden (by caller): ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() +file(INSTALL DESTINATION "/usr/local/lib/mimalloc-1.7/cmake" TYPE FILE FILES "/home/aprokurov/Projects/mimalloc/cmake/mimalloc-config-version.cmake") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + execute_process(COMMAND /usr/bin/cmake -E create_symlink mimalloc-1.7/libmimalloc.so.1.7 libmimalloc.so WORKING_DIRECTORY /usr/local/lib/mimalloc-1.7/..) +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + MESSAGE("-- Symbolic link: /usr/local/lib/libmimalloc.so -> mimalloc-1.7/libmimalloc.so.1.7") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + list(APPEND CMAKE_ABSOLUTE_DESTINATION_FILES + "/usr/local/lib/mimalloc-1.7/mimalloc.o") + if(CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION) + message(WARNING "ABSOLUTE path INSTALL DESTINATION : ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() + if(CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION) + message(FATAL_ERROR "ABSOLUTE path INSTALL DESTINATION forbidden (by caller): ${CMAKE_ABSOLUTE_DESTINATION_FILES}") + endif() +file(INSTALL DESTINATION "/usr/local/lib/mimalloc-1.7" TYPE FILE RENAME "mimalloc.o" FILES "/home/aprokurov/Projects/mimalloc/CMakeFiles/mimalloc-obj.dir/src/static.c.o") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/aprokurov/Projects/mimalloc/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/doc/mimalloc-doc.h b/doc/mimalloc-doc.h index 59113402..cdc332e4 100644 --- a/doc/mimalloc-doc.h +++ b/doc/mimalloc-doc.h @@ -351,6 +351,13 @@ void mi_thread_stats_print_out(mi_output_fun* out, void* arg); /// @see mi_register_deferred_free typedef void (mi_deferred_free_fun)(bool force, unsigned long long heartbeat, void* arg); +/// Type of deferred free function that is used per mi_heap_t. +/// @param heap Heap where this deferred function was registered first. +/// @param force If \a true all outstanting items should be freed. +/// @param heartbeat A monotonically increasing count. +/// @param arg Argument that was passed at registration to hold extra state. +typedef void (mi_local_deferred_free_fun)(mi_heap_t* heap,bool force,unsigned long long heartbeat,void* arg); + /// Register a deferred free function. /// @param deferred_free Address of a deferred free-ing function or \a NULL to unregister. /// @param arg Argument that will be passed on to the deferred free function. diff --git a/include/mimalloc-types.h b/include/mimalloc-types.h index 99024679..748040fc 100644 --- a/include/mimalloc-types.h +++ b/include/mimalloc-types.h @@ -350,6 +350,8 @@ struct mi_heap_s { size_t page_retired_max; // largest retired index into the `pages` array. mi_heap_t* next; // list of heaps per thread bool no_reclaim; // `true` if this heap should not reclaim abandoned pages + void* deferred_free; + void* deferred_arg; }; diff --git a/include/mimalloc.h b/include/mimalloc.h index a2835d02..43fd6e7b 100644 --- a/include/mimalloc.h +++ b/include/mimalloc.h @@ -8,370 +8,366 @@ terms of the MIT license. A copy of the license can be found in the file #ifndef MIMALLOC_H #define MIMALLOC_H -#define MI_MALLOC_VERSION 170 // major + 2 digits minor +#define MI_MALLOC_VERSION 170 // major + 2 digits minor // ------------------------------------------------------ // Compiler specific attributes // ------------------------------------------------------ #ifdef __cplusplus - #if (__cplusplus >= 201103L) || (_MSC_VER > 1900) // C++11 - #define mi_attr_noexcept noexcept - #else - #define mi_attr_noexcept throw() - #endif +#if (__cplusplus >= 201103L) || (_MSC_VER > 1900) // C++11 +#define mi_attr_noexcept noexcept #else - #define mi_attr_noexcept +#define mi_attr_noexcept throw() +#endif +#else +#define mi_attr_noexcept #endif #if defined(__cplusplus) && (__cplusplus >= 201703) - #define mi_decl_nodiscard [[nodiscard]] -#elif (__GNUC__ >= 4) || defined(__clang__) // includes clang, icc, and clang-cl - #define mi_decl_nodiscard __attribute__((warn_unused_result)) +#define mi_decl_nodiscard [[nodiscard]] +#elif (__GNUC__ >= 4) || defined(__clang__) // includes clang, icc, and clang-cl +#define mi_decl_nodiscard __attribute__((warn_unused_result)) #elif (_MSC_VER >= 1700) - #define mi_decl_nodiscard _Check_return_ +#define mi_decl_nodiscard _Check_return_ #else - #define mi_decl_nodiscard +#define mi_decl_nodiscard #endif #if defined(_MSC_VER) || defined(__MINGW32__) - #if !defined(MI_SHARED_LIB) - #define mi_decl_export - #elif defined(MI_SHARED_LIB_EXPORT) - #define mi_decl_export __declspec(dllexport) - #else - #define mi_decl_export __declspec(dllimport) - #endif - #if defined(__MINGW32__) - #define mi_decl_restrict - #define mi_attr_malloc __attribute__((malloc)) - #else - #if (_MSC_VER >= 1900) && !defined(__EDG__) - #define mi_decl_restrict __declspec(allocator) __declspec(restrict) - #else - #define mi_decl_restrict __declspec(restrict) - #endif - #define mi_attr_malloc - #endif - #define mi_cdecl __cdecl - #define mi_attr_alloc_size(s) - #define mi_attr_alloc_size2(s1,s2) - #define mi_attr_alloc_align(p) -#elif defined(__GNUC__) // includes clang and icc - #define mi_cdecl // leads to warnings... __attribute__((cdecl)) - #define mi_decl_export __attribute__((visibility("default"))) - #define mi_decl_restrict - #define mi_attr_malloc __attribute__((malloc)) - #if (defined(__clang_major__) && (__clang_major__ < 4)) || (__GNUC__ < 5) - #define mi_attr_alloc_size(s) - #define mi_attr_alloc_size2(s1,s2) - #define mi_attr_alloc_align(p) - #elif defined(__INTEL_COMPILER) - #define mi_attr_alloc_size(s) __attribute__((alloc_size(s))) - #define mi_attr_alloc_size2(s1,s2) __attribute__((alloc_size(s1,s2))) - #define mi_attr_alloc_align(p) - #else - #define mi_attr_alloc_size(s) __attribute__((alloc_size(s))) - #define mi_attr_alloc_size2(s1,s2) __attribute__((alloc_size(s1,s2))) - #define mi_attr_alloc_align(p) __attribute__((alloc_align(p))) - #endif +#if !defined(MI_SHARED_LIB) +#define mi_decl_export +#elif defined(MI_SHARED_LIB_EXPORT) +#define mi_decl_export __declspec(dllexport) #else - #define mi_cdecl - #define mi_decl_export - #define mi_decl_restrict - #define mi_attr_malloc - #define mi_attr_alloc_size(s) - #define mi_attr_alloc_size2(s1,s2) - #define mi_attr_alloc_align(p) +#define mi_decl_export __declspec(dllimport) +#endif +#if defined(__MINGW32__) +#define mi_decl_restrict +#define mi_attr_malloc __attribute__((malloc)) +#else +#if (_MSC_VER >= 1900) && !defined(__EDG__) +#define mi_decl_restrict __declspec(allocator) __declspec(restrict) +#else +#define mi_decl_restrict __declspec(restrict) +#endif +#define mi_attr_malloc +#endif +#define mi_cdecl __cdecl +#define mi_attr_alloc_size(s) +#define mi_attr_alloc_size2(s1, s2) +#define mi_attr_alloc_align(p) +#elif defined(__GNUC__) // includes clang and icc +#define mi_cdecl // leads to warnings... __attribute__((cdecl)) +#define mi_decl_export __attribute__((visibility("default"))) +#define mi_decl_restrict +#define mi_attr_malloc __attribute__((malloc)) +#if (defined(__clang_major__) && (__clang_major__ < 4)) || (__GNUC__ < 5) +#define mi_attr_alloc_size(s) +#define mi_attr_alloc_size2(s1, s2) +#define mi_attr_alloc_align(p) +#elif defined(__INTEL_COMPILER) +#define mi_attr_alloc_size(s) __attribute__((alloc_size(s))) +#define mi_attr_alloc_size2(s1, s2) __attribute__((alloc_size(s1, s2))) +#define mi_attr_alloc_align(p) +#else +#define mi_attr_alloc_size(s) __attribute__((alloc_size(s))) +#define mi_attr_alloc_size2(s1, s2) __attribute__((alloc_size(s1, s2))) +#define mi_attr_alloc_align(p) __attribute__((alloc_align(p))) +#endif +#else +#define mi_cdecl +#define mi_decl_export +#define mi_decl_restrict +#define mi_attr_malloc +#define mi_attr_alloc_size(s) +#define mi_attr_alloc_size2(s1, s2) +#define mi_attr_alloc_align(p) #endif // ------------------------------------------------------ // Includes // ------------------------------------------------------ -#include // size_t -#include // bool +#include // size_t +#include // bool #ifdef __cplusplus -extern "C" { +extern "C" +{ #endif -// ------------------------------------------------------ -// Standard malloc interface -// ------------------------------------------------------ + // ------------------------------------------------------ + // Standard malloc interface + // ------------------------------------------------------ -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_malloc(size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_calloc(size_t count, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size2(1,2); -mi_decl_nodiscard mi_decl_export void* mi_realloc(void* p, size_t newsize) mi_attr_noexcept mi_attr_alloc_size(2); -mi_decl_export void* mi_expand(void* p, size_t newsize) mi_attr_noexcept mi_attr_alloc_size(2); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_malloc(size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_calloc(size_t count, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size2(1, 2); + mi_decl_nodiscard mi_decl_export void *mi_realloc(void *p, size_t newsize) mi_attr_noexcept mi_attr_alloc_size(2); + mi_decl_export void *mi_expand(void *p, size_t newsize) mi_attr_noexcept mi_attr_alloc_size(2); -mi_decl_export void mi_free(void* p) mi_attr_noexcept; -mi_decl_nodiscard mi_decl_export mi_decl_restrict char* mi_strdup(const char* s) mi_attr_noexcept mi_attr_malloc; -mi_decl_nodiscard mi_decl_export mi_decl_restrict char* mi_strndup(const char* s, size_t n) mi_attr_noexcept mi_attr_malloc; -mi_decl_nodiscard mi_decl_export mi_decl_restrict char* mi_realpath(const char* fname, char* resolved_name) mi_attr_noexcept mi_attr_malloc; + mi_decl_export void mi_free(void *p) mi_attr_noexcept; + mi_decl_nodiscard mi_decl_export mi_decl_restrict char *mi_strdup(const char *s) mi_attr_noexcept mi_attr_malloc; + mi_decl_nodiscard mi_decl_export mi_decl_restrict char *mi_strndup(const char *s, size_t n) mi_attr_noexcept mi_attr_malloc; + mi_decl_nodiscard mi_decl_export mi_decl_restrict char *mi_realpath(const char *fname, char *resolved_name) mi_attr_noexcept mi_attr_malloc; // ------------------------------------------------------ // Extended functionality // ------------------------------------------------------ -#define MI_SMALL_WSIZE_MAX (128) -#define MI_SMALL_SIZE_MAX (MI_SMALL_WSIZE_MAX*sizeof(void*)) +#define MI_SMALL_WSIZE_MAX (128) +#define MI_SMALL_SIZE_MAX (MI_SMALL_WSIZE_MAX * sizeof(void *)) -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_malloc_small(size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_zalloc_small(size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_zalloc(size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_malloc_small(size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_zalloc_small(size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_zalloc(size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_mallocn(size_t count, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size2(1,2); -mi_decl_nodiscard mi_decl_export void* mi_reallocn(void* p, size_t count, size_t size) mi_attr_noexcept mi_attr_alloc_size2(2,3); -mi_decl_nodiscard mi_decl_export void* mi_reallocf(void* p, size_t newsize) mi_attr_noexcept mi_attr_alloc_size(2); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_mallocn(size_t count, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size2(1, 2); + mi_decl_nodiscard mi_decl_export void *mi_reallocn(void *p, size_t count, size_t size) mi_attr_noexcept mi_attr_alloc_size2(2, 3); + mi_decl_nodiscard mi_decl_export void *mi_reallocf(void *p, size_t newsize) mi_attr_noexcept mi_attr_alloc_size(2); -mi_decl_nodiscard mi_decl_export size_t mi_usable_size(const void* p) mi_attr_noexcept; -mi_decl_nodiscard mi_decl_export size_t mi_good_size(size_t size) mi_attr_noexcept; + mi_decl_nodiscard mi_decl_export size_t mi_usable_size(const void *p) mi_attr_noexcept; + mi_decl_nodiscard mi_decl_export size_t mi_good_size(size_t size) mi_attr_noexcept; + // ------------------------------------------------------ + // Internals + // ------------------------------------------------------ -// ------------------------------------------------------ -// Internals -// ------------------------------------------------------ + typedef void(mi_cdecl mi_deferred_free_fun)(bool force, unsigned long long heartbeat, void *arg); + mi_decl_export void mi_register_deferred_free(mi_deferred_free_fun *deferred_free, void *arg) mi_attr_noexcept; -typedef void (mi_cdecl mi_deferred_free_fun)(bool force, unsigned long long heartbeat, void* arg); -mi_decl_export void mi_register_deferred_free(mi_deferred_free_fun* deferred_free, void* arg) mi_attr_noexcept; + typedef void(mi_cdecl mi_output_fun)(const char *msg, void *arg); + mi_decl_export void mi_register_output(mi_output_fun *out, void *arg) mi_attr_noexcept; -typedef void (mi_cdecl mi_output_fun)(const char* msg, void* arg); -mi_decl_export void mi_register_output(mi_output_fun* out, void* arg) mi_attr_noexcept; + typedef void(mi_cdecl mi_error_fun)(int err, void *arg); + mi_decl_export void mi_register_error(mi_error_fun *fun, void *arg); -typedef void (mi_cdecl mi_error_fun)(int err, void* arg); -mi_decl_export void mi_register_error(mi_error_fun* fun, void* arg); + mi_decl_export void mi_collect(bool force) mi_attr_noexcept; + mi_decl_export int mi_version(void) mi_attr_noexcept; + mi_decl_export void mi_stats_reset(void) mi_attr_noexcept; + mi_decl_export void mi_stats_merge(void) mi_attr_noexcept; + mi_decl_export void mi_stats_print(void *out) mi_attr_noexcept; // backward compatibility: `out` is ignored and should be NULL + mi_decl_export void mi_stats_print_out(mi_output_fun *out, void *arg) mi_attr_noexcept; -mi_decl_export void mi_collect(bool force) mi_attr_noexcept; -mi_decl_export int mi_version(void) mi_attr_noexcept; -mi_decl_export void mi_stats_reset(void) mi_attr_noexcept; -mi_decl_export void mi_stats_merge(void) mi_attr_noexcept; -mi_decl_export void mi_stats_print(void* out) mi_attr_noexcept; // backward compatibility: `out` is ignored and should be NULL -mi_decl_export void mi_stats_print_out(mi_output_fun* out, void* arg) mi_attr_noexcept; + mi_decl_export void mi_process_init(void) mi_attr_noexcept; + mi_decl_export void mi_thread_init(void) mi_attr_noexcept; + mi_decl_export void mi_thread_done(void) mi_attr_noexcept; + mi_decl_export void mi_thread_stats_print_out(mi_output_fun *out, void *arg) mi_attr_noexcept; -mi_decl_export void mi_process_init(void) mi_attr_noexcept; -mi_decl_export void mi_thread_init(void) mi_attr_noexcept; -mi_decl_export void mi_thread_done(void) mi_attr_noexcept; -mi_decl_export void mi_thread_stats_print_out(mi_output_fun* out, void* arg) mi_attr_noexcept; + mi_decl_export void mi_process_info(size_t *elapsed_msecs, size_t *user_msecs, size_t *system_msecs, + size_t *current_rss, size_t *peak_rss, + size_t *current_commit, size_t *peak_commit, size_t *page_faults) mi_attr_noexcept; -mi_decl_export void mi_process_info(size_t* elapsed_msecs, size_t* user_msecs, size_t* system_msecs, - size_t* current_rss, size_t* peak_rss, - size_t* current_commit, size_t* peak_commit, size_t* page_faults) mi_attr_noexcept; + // ------------------------------------------------------------------------------------- + // Aligned allocation + // Note that `alignment` always follows `size` for consistency with unaligned + // allocation, but unfortunately this differs from `posix_memalign` and `aligned_alloc`. + // ------------------------------------------------------------------------------------- -// ------------------------------------------------------------------------------------- -// Aligned allocation -// Note that `alignment` always follows `size` for consistency with unaligned -// allocation, but unfortunately this differs from `posix_memalign` and `aligned_alloc`. -// ------------------------------------------------------------------------------------- + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_malloc_aligned(size_t size, size_t alignment) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1) mi_attr_alloc_align(2); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_malloc_aligned_at(size_t size, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_zalloc_aligned(size_t size, size_t alignment) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1) mi_attr_alloc_align(2); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_zalloc_aligned_at(size_t size, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_calloc_aligned(size_t count, size_t size, size_t alignment) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size2(1, 2) mi_attr_alloc_align(3); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_calloc_aligned_at(size_t count, size_t size, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size2(1, 2); + mi_decl_nodiscard mi_decl_export void *mi_realloc_aligned(void *p, size_t newsize, size_t alignment) mi_attr_noexcept mi_attr_alloc_size(2) mi_attr_alloc_align(3); + mi_decl_nodiscard mi_decl_export void *mi_realloc_aligned_at(void *p, size_t newsize, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_alloc_size(2); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_malloc_aligned(size_t size, size_t alignment) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1) mi_attr_alloc_align(2); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_malloc_aligned_at(size_t size, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_zalloc_aligned(size_t size, size_t alignment) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1) mi_attr_alloc_align(2); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_zalloc_aligned_at(size_t size, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_calloc_aligned(size_t count, size_t size, size_t alignment) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size2(1,2) mi_attr_alloc_align(3); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_calloc_aligned_at(size_t count, size_t size, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size2(1,2); -mi_decl_nodiscard mi_decl_export void* mi_realloc_aligned(void* p, size_t newsize, size_t alignment) mi_attr_noexcept mi_attr_alloc_size(2) mi_attr_alloc_align(3); -mi_decl_nodiscard mi_decl_export void* mi_realloc_aligned_at(void* p, size_t newsize, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_alloc_size(2); + // ------------------------------------------------------------------------------------- + // Heaps: first-class, but can only allocate from the same thread that created it. + // ------------------------------------------------------------------------------------- + struct mi_heap_s; + typedef struct mi_heap_s mi_heap_t; -// ------------------------------------------------------------------------------------- -// Heaps: first-class, but can only allocate from the same thread that created it. -// ------------------------------------------------------------------------------------- + mi_decl_nodiscard mi_decl_export mi_heap_t *mi_heap_new(void); + mi_decl_export void mi_heap_delete(mi_heap_t *heap); + mi_decl_export void mi_heap_destroy(mi_heap_t *heap); + mi_decl_export mi_heap_t *mi_heap_set_default(mi_heap_t *heap); + mi_decl_export mi_heap_t *mi_heap_get_default(void); + mi_decl_export mi_heap_t *mi_heap_get_backing(void); + mi_decl_export void mi_heap_collect(mi_heap_t *heap, bool force) mi_attr_noexcept; + typedef void(mi_local_deferred_free_fun)(mi_heap_t *heap, bool force, unsigned long long heartbeat, void *arg); + mi_decl_export void mi_heap_register_local_deferred_free(mi_heap_t *heap, mi_local_deferred_free_fun *deferred_free, void *arg) mi_attr_noexcept; -struct mi_heap_s; -typedef struct mi_heap_s mi_heap_t; + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_heap_malloc(mi_heap_t *heap, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_heap_zalloc(mi_heap_t *heap, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_heap_calloc(mi_heap_t *heap, size_t count, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size2(2, 3); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_heap_mallocn(mi_heap_t *heap, size_t count, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size2(2, 3); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_heap_malloc_small(mi_heap_t *heap, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2); -mi_decl_nodiscard mi_decl_export mi_heap_t* mi_heap_new(void); -mi_decl_export void mi_heap_delete(mi_heap_t* heap); -mi_decl_export void mi_heap_destroy(mi_heap_t* heap); -mi_decl_export mi_heap_t* mi_heap_set_default(mi_heap_t* heap); -mi_decl_export mi_heap_t* mi_heap_get_default(void); -mi_decl_export mi_heap_t* mi_heap_get_backing(void); -mi_decl_export void mi_heap_collect(mi_heap_t* heap, bool force) mi_attr_noexcept; + mi_decl_nodiscard mi_decl_export void *mi_heap_realloc(mi_heap_t *heap, void *p, size_t newsize) mi_attr_noexcept mi_attr_alloc_size(3); + mi_decl_nodiscard mi_decl_export void *mi_heap_reallocn(mi_heap_t *heap, void *p, size_t count, size_t size) mi_attr_noexcept mi_attr_alloc_size2(3, 4); + mi_decl_nodiscard mi_decl_export void *mi_heap_reallocf(mi_heap_t *heap, void *p, size_t newsize) mi_attr_noexcept mi_attr_alloc_size(3); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_heap_malloc(mi_heap_t* heap, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_heap_zalloc(mi_heap_t* heap, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_heap_calloc(mi_heap_t* heap, size_t count, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size2(2, 3); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_heap_mallocn(mi_heap_t* heap, size_t count, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size2(2, 3); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_heap_malloc_small(mi_heap_t* heap, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2); + mi_decl_nodiscard mi_decl_export mi_decl_restrict char *mi_heap_strdup(mi_heap_t *heap, const char *s) mi_attr_noexcept mi_attr_malloc; + mi_decl_nodiscard mi_decl_export mi_decl_restrict char *mi_heap_strndup(mi_heap_t *heap, const char *s, size_t n) mi_attr_noexcept mi_attr_malloc; + mi_decl_nodiscard mi_decl_export mi_decl_restrict char *mi_heap_realpath(mi_heap_t *heap, const char *fname, char *resolved_name) mi_attr_noexcept mi_attr_malloc; -mi_decl_nodiscard mi_decl_export void* mi_heap_realloc(mi_heap_t* heap, void* p, size_t newsize) mi_attr_noexcept mi_attr_alloc_size(3); -mi_decl_nodiscard mi_decl_export void* mi_heap_reallocn(mi_heap_t* heap, void* p, size_t count, size_t size) mi_attr_noexcept mi_attr_alloc_size2(3,4); -mi_decl_nodiscard mi_decl_export void* mi_heap_reallocf(mi_heap_t* heap, void* p, size_t newsize) mi_attr_noexcept mi_attr_alloc_size(3); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_heap_malloc_aligned(mi_heap_t *heap, size_t size, size_t alignment) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2) mi_attr_alloc_align(3); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_heap_malloc_aligned_at(mi_heap_t *heap, size_t size, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_heap_zalloc_aligned(mi_heap_t *heap, size_t size, size_t alignment) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2) mi_attr_alloc_align(3); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_heap_zalloc_aligned_at(mi_heap_t *heap, size_t size, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_heap_calloc_aligned(mi_heap_t *heap, size_t count, size_t size, size_t alignment) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size2(2, 3) mi_attr_alloc_align(4); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_heap_calloc_aligned_at(mi_heap_t *heap, size_t count, size_t size, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size2(2, 3); + mi_decl_nodiscard mi_decl_export void *mi_heap_realloc_aligned(mi_heap_t *heap, void *p, size_t newsize, size_t alignment) mi_attr_noexcept mi_attr_alloc_size(3) mi_attr_alloc_align(4); + mi_decl_nodiscard mi_decl_export void *mi_heap_realloc_aligned_at(mi_heap_t *heap, void *p, size_t newsize, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_alloc_size(3); -mi_decl_nodiscard mi_decl_export mi_decl_restrict char* mi_heap_strdup(mi_heap_t* heap, const char* s) mi_attr_noexcept mi_attr_malloc; -mi_decl_nodiscard mi_decl_export mi_decl_restrict char* mi_heap_strndup(mi_heap_t* heap, const char* s, size_t n) mi_attr_noexcept mi_attr_malloc; -mi_decl_nodiscard mi_decl_export mi_decl_restrict char* mi_heap_realpath(mi_heap_t* heap, const char* fname, char* resolved_name) mi_attr_noexcept mi_attr_malloc; + // -------------------------------------------------------------------------------- + // Zero initialized re-allocation. + // Only valid on memory that was originally allocated with zero initialization too. + // e.g. `mi_calloc`, `mi_zalloc`, `mi_zalloc_aligned` etc. + // see + // -------------------------------------------------------------------------------- -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_heap_malloc_aligned(mi_heap_t* heap, size_t size, size_t alignment) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2) mi_attr_alloc_align(3); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_heap_malloc_aligned_at(mi_heap_t* heap, size_t size, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_heap_zalloc_aligned(mi_heap_t* heap, size_t size, size_t alignment) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2) mi_attr_alloc_align(3); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_heap_zalloc_aligned_at(mi_heap_t* heap, size_t size, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_heap_calloc_aligned(mi_heap_t* heap, size_t count, size_t size, size_t alignment) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size2(2, 3) mi_attr_alloc_align(4); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_heap_calloc_aligned_at(mi_heap_t* heap, size_t count, size_t size, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size2(2, 3); -mi_decl_nodiscard mi_decl_export void* mi_heap_realloc_aligned(mi_heap_t* heap, void* p, size_t newsize, size_t alignment) mi_attr_noexcept mi_attr_alloc_size(3) mi_attr_alloc_align(4); -mi_decl_nodiscard mi_decl_export void* mi_heap_realloc_aligned_at(mi_heap_t* heap, void* p, size_t newsize, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_alloc_size(3); + mi_decl_nodiscard mi_decl_export void *mi_rezalloc(void *p, size_t newsize) mi_attr_noexcept mi_attr_alloc_size(2); + mi_decl_nodiscard mi_decl_export void *mi_recalloc(void *p, size_t newcount, size_t size) mi_attr_noexcept mi_attr_alloc_size2(2, 3); + mi_decl_nodiscard mi_decl_export void *mi_rezalloc_aligned(void *p, size_t newsize, size_t alignment) mi_attr_noexcept mi_attr_alloc_size(2) mi_attr_alloc_align(3); + mi_decl_nodiscard mi_decl_export void *mi_rezalloc_aligned_at(void *p, size_t newsize, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_alloc_size(2); + mi_decl_nodiscard mi_decl_export void *mi_recalloc_aligned(void *p, size_t newcount, size_t size, size_t alignment) mi_attr_noexcept mi_attr_alloc_size2(2, 3) mi_attr_alloc_align(4); + mi_decl_nodiscard mi_decl_export void *mi_recalloc_aligned_at(void *p, size_t newcount, size_t size, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_alloc_size2(2, 3); -// -------------------------------------------------------------------------------- -// Zero initialized re-allocation. -// Only valid on memory that was originally allocated with zero initialization too. -// e.g. `mi_calloc`, `mi_zalloc`, `mi_zalloc_aligned` etc. -// see -// -------------------------------------------------------------------------------- + mi_decl_nodiscard mi_decl_export void *mi_heap_rezalloc(mi_heap_t *heap, void *p, size_t newsize) mi_attr_noexcept mi_attr_alloc_size(3); + mi_decl_nodiscard mi_decl_export void *mi_heap_recalloc(mi_heap_t *heap, void *p, size_t newcount, size_t size) mi_attr_noexcept mi_attr_alloc_size2(3, 4); -mi_decl_nodiscard mi_decl_export void* mi_rezalloc(void* p, size_t newsize) mi_attr_noexcept mi_attr_alloc_size(2); -mi_decl_nodiscard mi_decl_export void* mi_recalloc(void* p, size_t newcount, size_t size) mi_attr_noexcept mi_attr_alloc_size2(2,3); + mi_decl_nodiscard mi_decl_export void *mi_heap_rezalloc_aligned(mi_heap_t *heap, void *p, size_t newsize, size_t alignment) mi_attr_noexcept mi_attr_alloc_size(3) mi_attr_alloc_align(4); + mi_decl_nodiscard mi_decl_export void *mi_heap_rezalloc_aligned_at(mi_heap_t *heap, void *p, size_t newsize, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_alloc_size(3); + mi_decl_nodiscard mi_decl_export void *mi_heap_recalloc_aligned(mi_heap_t *heap, void *p, size_t newcount, size_t size, size_t alignment) mi_attr_noexcept mi_attr_alloc_size2(3, 4) mi_attr_alloc_align(5); + mi_decl_nodiscard mi_decl_export void *mi_heap_recalloc_aligned_at(mi_heap_t *heap, void *p, size_t newcount, size_t size, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_alloc_size2(3, 4); -mi_decl_nodiscard mi_decl_export void* mi_rezalloc_aligned(void* p, size_t newsize, size_t alignment) mi_attr_noexcept mi_attr_alloc_size(2) mi_attr_alloc_align(3); -mi_decl_nodiscard mi_decl_export void* mi_rezalloc_aligned_at(void* p, size_t newsize, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_alloc_size(2); -mi_decl_nodiscard mi_decl_export void* mi_recalloc_aligned(void* p, size_t newcount, size_t size, size_t alignment) mi_attr_noexcept mi_attr_alloc_size2(2,3) mi_attr_alloc_align(4); -mi_decl_nodiscard mi_decl_export void* mi_recalloc_aligned_at(void* p, size_t newcount, size_t size, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_alloc_size2(2,3); + // ------------------------------------------------------ + // Analysis + // ------------------------------------------------------ -mi_decl_nodiscard mi_decl_export void* mi_heap_rezalloc(mi_heap_t* heap, void* p, size_t newsize) mi_attr_noexcept mi_attr_alloc_size(3); -mi_decl_nodiscard mi_decl_export void* mi_heap_recalloc(mi_heap_t* heap, void* p, size_t newcount, size_t size) mi_attr_noexcept mi_attr_alloc_size2(3,4); + mi_decl_export bool mi_heap_contains_block(mi_heap_t *heap, const void *p); + mi_decl_export bool mi_heap_check_owned(mi_heap_t *heap, const void *p); + mi_decl_export bool mi_check_owned(const void *p); -mi_decl_nodiscard mi_decl_export void* mi_heap_rezalloc_aligned(mi_heap_t* heap, void* p, size_t newsize, size_t alignment) mi_attr_noexcept mi_attr_alloc_size(3) mi_attr_alloc_align(4); -mi_decl_nodiscard mi_decl_export void* mi_heap_rezalloc_aligned_at(mi_heap_t* heap, void* p, size_t newsize, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_alloc_size(3); -mi_decl_nodiscard mi_decl_export void* mi_heap_recalloc_aligned(mi_heap_t* heap, void* p, size_t newcount, size_t size, size_t alignment) mi_attr_noexcept mi_attr_alloc_size2(3,4) mi_attr_alloc_align(5); -mi_decl_nodiscard mi_decl_export void* mi_heap_recalloc_aligned_at(mi_heap_t* heap, void* p, size_t newcount, size_t size, size_t alignment, size_t offset) mi_attr_noexcept mi_attr_alloc_size2(3,4); + // An area of heap space contains blocks of a single size. + typedef struct mi_heap_area_s + { + void *blocks; // start of the area containing heap blocks + size_t reserved; // bytes reserved for this area (virtual) + size_t committed; // current available bytes for this area + size_t used; // bytes in use by allocated blocks + size_t block_size; // size in bytes of each block + } mi_heap_area_t; + typedef bool(mi_cdecl mi_block_visit_fun)(const mi_heap_t *heap, const mi_heap_area_t *area, void *block, size_t block_size, void *arg); -// ------------------------------------------------------ -// Analysis -// ------------------------------------------------------ + mi_decl_export bool mi_heap_visit_blocks(const mi_heap_t *heap, bool visit_all_blocks, mi_block_visit_fun *visitor, void *arg); -mi_decl_export bool mi_heap_contains_block(mi_heap_t* heap, const void* p); -mi_decl_export bool mi_heap_check_owned(mi_heap_t* heap, const void* p); -mi_decl_export bool mi_check_owned(const void* p); + // Experimental + mi_decl_nodiscard mi_decl_export bool mi_is_in_heap_region(const void *p) mi_attr_noexcept; + mi_decl_nodiscard mi_decl_export bool mi_is_redirected(void) mi_attr_noexcept; -// An area of heap space contains blocks of a single size. -typedef struct mi_heap_area_s { - void* blocks; // start of the area containing heap blocks - size_t reserved; // bytes reserved for this area (virtual) - size_t committed; // current available bytes for this area - size_t used; // bytes in use by allocated blocks - size_t block_size; // size in bytes of each block -} mi_heap_area_t; + mi_decl_export int mi_reserve_huge_os_pages_interleave(size_t pages, size_t numa_nodes, size_t timeout_msecs) mi_attr_noexcept; + mi_decl_export int mi_reserve_huge_os_pages_at(size_t pages, int numa_node, size_t timeout_msecs) mi_attr_noexcept; -typedef bool (mi_cdecl mi_block_visit_fun)(const mi_heap_t* heap, const mi_heap_area_t* area, void* block, size_t block_size, void* arg); + mi_decl_export int mi_reserve_os_memory(size_t size, bool commit, bool allow_large) mi_attr_noexcept; + mi_decl_export bool mi_manage_os_memory(void *start, size_t size, bool is_committed, bool is_large, bool is_zero, int numa_node) mi_attr_noexcept; -mi_decl_export bool mi_heap_visit_blocks(const mi_heap_t* heap, bool visit_all_blocks, mi_block_visit_fun* visitor, void* arg); + // deprecated + mi_decl_export int mi_reserve_huge_os_pages(size_t pages, double max_secs, size_t *pages_reserved) mi_attr_noexcept; -// Experimental -mi_decl_nodiscard mi_decl_export bool mi_is_in_heap_region(const void* p) mi_attr_noexcept; -mi_decl_nodiscard mi_decl_export bool mi_is_redirected(void) mi_attr_noexcept; + // ------------------------------------------------------ + // Convenience + // ------------------------------------------------------ -mi_decl_export int mi_reserve_huge_os_pages_interleave(size_t pages, size_t numa_nodes, size_t timeout_msecs) mi_attr_noexcept; -mi_decl_export int mi_reserve_huge_os_pages_at(size_t pages, int numa_node, size_t timeout_msecs) mi_attr_noexcept; +#define mi_malloc_tp(tp) ((tp *)mi_malloc(sizeof(tp))) +#define mi_zalloc_tp(tp) ((tp *)mi_zalloc(sizeof(tp))) +#define mi_calloc_tp(tp, n) ((tp *)mi_calloc(n, sizeof(tp))) +#define mi_mallocn_tp(tp, n) ((tp *)mi_mallocn(n, sizeof(tp))) +#define mi_reallocn_tp(p, tp, n) ((tp *)mi_reallocn(p, n, sizeof(tp))) +#define mi_recalloc_tp(p, tp, n) ((tp *)mi_recalloc(p, n, sizeof(tp))) -mi_decl_export int mi_reserve_os_memory(size_t size, bool commit, bool allow_large) mi_attr_noexcept; -mi_decl_export bool mi_manage_os_memory(void* start, size_t size, bool is_committed, bool is_large, bool is_zero, int numa_node) mi_attr_noexcept; +#define mi_heap_malloc_tp(hp, tp) ((tp *)mi_heap_malloc(hp, sizeof(tp))) +#define mi_heap_zalloc_tp(hp, tp) ((tp *)mi_heap_zalloc(hp, sizeof(tp))) +#define mi_heap_calloc_tp(hp, tp, n) ((tp *)mi_heap_calloc(hp, n, sizeof(tp))) +#define mi_heap_mallocn_tp(hp, tp, n) ((tp *)mi_heap_mallocn(hp, n, sizeof(tp))) +#define mi_heap_reallocn_tp(hp, p, tp, n) ((tp *)mi_heap_reallocn(hp, p, n, sizeof(tp))) +#define mi_heap_recalloc_tp(hp, p, tp, n) ((tp *)mi_heap_recalloc(hp, p, n, sizeof(tp))) + // ------------------------------------------------------ + // Options, all `false` by default + // ------------------------------------------------------ -// deprecated -mi_decl_export int mi_reserve_huge_os_pages(size_t pages, double max_secs, size_t* pages_reserved) mi_attr_noexcept; + typedef enum mi_option_e + { + // stable options + mi_option_show_errors, + mi_option_show_stats, + mi_option_verbose, + // the following options are experimental + mi_option_eager_commit, + mi_option_eager_region_commit, + mi_option_reset_decommits, + mi_option_large_os_pages, // implies eager commit + mi_option_reserve_huge_os_pages, + mi_option_reserve_os_memory, + mi_option_segment_cache, + mi_option_page_reset, + mi_option_abandoned_page_reset, + mi_option_segment_reset, + mi_option_eager_commit_delay, + mi_option_reset_delay, + mi_option_use_numa_nodes, + mi_option_limit_os_alloc, + mi_option_os_tag, + mi_option_max_errors, + mi_option_max_warnings, + _mi_option_last + } mi_option_t; + mi_decl_nodiscard mi_decl_export bool mi_option_is_enabled(mi_option_t option); + mi_decl_export void mi_option_enable(mi_option_t option); + mi_decl_export void mi_option_disable(mi_option_t option); + mi_decl_export void mi_option_set_enabled(mi_option_t option, bool enable); + mi_decl_export void mi_option_set_enabled_default(mi_option_t option, bool enable); -// ------------------------------------------------------ -// Convenience -// ------------------------------------------------------ + mi_decl_nodiscard mi_decl_export long mi_option_get(mi_option_t option); + mi_decl_export void mi_option_set(mi_option_t option, long value); + mi_decl_export void mi_option_set_default(mi_option_t option, long value); -#define mi_malloc_tp(tp) ((tp*)mi_malloc(sizeof(tp))) -#define mi_zalloc_tp(tp) ((tp*)mi_zalloc(sizeof(tp))) -#define mi_calloc_tp(tp,n) ((tp*)mi_calloc(n,sizeof(tp))) -#define mi_mallocn_tp(tp,n) ((tp*)mi_mallocn(n,sizeof(tp))) -#define mi_reallocn_tp(p,tp,n) ((tp*)mi_reallocn(p,n,sizeof(tp))) -#define mi_recalloc_tp(p,tp,n) ((tp*)mi_recalloc(p,n,sizeof(tp))) + // ------------------------------------------------------------------------------------------------------- + // "mi" prefixed implementations of various posix, Unix, Windows, and C++ allocation functions. + // (This can be convenient when providing overrides of these functions as done in `mimalloc-override.h`.) + // note: we use `mi_cfree` as "checked free" and it checks if the pointer is in our heap before free-ing. + // ------------------------------------------------------------------------------------------------------- -#define mi_heap_malloc_tp(hp,tp) ((tp*)mi_heap_malloc(hp,sizeof(tp))) -#define mi_heap_zalloc_tp(hp,tp) ((tp*)mi_heap_zalloc(hp,sizeof(tp))) -#define mi_heap_calloc_tp(hp,tp,n) ((tp*)mi_heap_calloc(hp,n,sizeof(tp))) -#define mi_heap_mallocn_tp(hp,tp,n) ((tp*)mi_heap_mallocn(hp,n,sizeof(tp))) -#define mi_heap_reallocn_tp(hp,p,tp,n) ((tp*)mi_heap_reallocn(hp,p,n,sizeof(tp))) -#define mi_heap_recalloc_tp(hp,p,tp,n) ((tp*)mi_heap_recalloc(hp,p,n,sizeof(tp))) + mi_decl_export void mi_cfree(void *p) mi_attr_noexcept; + mi_decl_export void *mi__expand(void *p, size_t newsize) mi_attr_noexcept; + mi_decl_nodiscard mi_decl_export size_t mi_malloc_size(const void *p) mi_attr_noexcept; + mi_decl_nodiscard mi_decl_export size_t mi_malloc_usable_size(const void *p) mi_attr_noexcept; + mi_decl_export int mi_posix_memalign(void **p, size_t alignment, size_t size) mi_attr_noexcept; + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_memalign(size_t alignment, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2) mi_attr_alloc_align(1); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_valloc(size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_pvalloc(size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_aligned_alloc(size_t alignment, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2) mi_attr_alloc_align(1); -// ------------------------------------------------------ -// Options, all `false` by default -// ------------------------------------------------------ + mi_decl_nodiscard mi_decl_export void *mi_reallocarray(void *p, size_t count, size_t size) mi_attr_noexcept mi_attr_alloc_size2(2, 3); + mi_decl_nodiscard mi_decl_export void *mi_aligned_recalloc(void *p, size_t newcount, size_t size, size_t alignment) mi_attr_noexcept; + mi_decl_nodiscard mi_decl_export void *mi_aligned_offset_recalloc(void *p, size_t newcount, size_t size, size_t alignment, size_t offset) mi_attr_noexcept; -typedef enum mi_option_e { - // stable options - mi_option_show_errors, - mi_option_show_stats, - mi_option_verbose, - // the following options are experimental - mi_option_eager_commit, - mi_option_eager_region_commit, - mi_option_reset_decommits, - mi_option_large_os_pages, // implies eager commit - mi_option_reserve_huge_os_pages, - mi_option_reserve_os_memory, - mi_option_segment_cache, - mi_option_page_reset, - mi_option_abandoned_page_reset, - mi_option_segment_reset, - mi_option_eager_commit_delay, - mi_option_reset_delay, - mi_option_use_numa_nodes, - mi_option_limit_os_alloc, - mi_option_os_tag, - mi_option_max_errors, - mi_option_max_warnings, - _mi_option_last -} mi_option_t; + mi_decl_nodiscard mi_decl_export mi_decl_restrict unsigned short *mi_wcsdup(const unsigned short *s) mi_attr_noexcept mi_attr_malloc; + mi_decl_nodiscard mi_decl_export mi_decl_restrict unsigned char *mi_mbsdup(const unsigned char *s) mi_attr_noexcept mi_attr_malloc; + mi_decl_export int mi_dupenv_s(char **buf, size_t *size, const char *name) mi_attr_noexcept; + mi_decl_export int mi_wdupenv_s(unsigned short **buf, size_t *size, const unsigned short *name) mi_attr_noexcept; + mi_decl_export void mi_free_size(void *p, size_t size) mi_attr_noexcept; + mi_decl_export void mi_free_size_aligned(void *p, size_t size, size_t alignment) mi_attr_noexcept; + mi_decl_export void mi_free_aligned(void *p, size_t alignment) mi_attr_noexcept; -mi_decl_nodiscard mi_decl_export bool mi_option_is_enabled(mi_option_t option); -mi_decl_export void mi_option_enable(mi_option_t option); -mi_decl_export void mi_option_disable(mi_option_t option); -mi_decl_export void mi_option_set_enabled(mi_option_t option, bool enable); -mi_decl_export void mi_option_set_enabled_default(mi_option_t option, bool enable); - -mi_decl_nodiscard mi_decl_export long mi_option_get(mi_option_t option); -mi_decl_export void mi_option_set(mi_option_t option, long value); -mi_decl_export void mi_option_set_default(mi_option_t option, long value); - - -// ------------------------------------------------------------------------------------------------------- -// "mi" prefixed implementations of various posix, Unix, Windows, and C++ allocation functions. -// (This can be convenient when providing overrides of these functions as done in `mimalloc-override.h`.) -// note: we use `mi_cfree` as "checked free" and it checks if the pointer is in our heap before free-ing. -// ------------------------------------------------------------------------------------------------------- - -mi_decl_export void mi_cfree(void* p) mi_attr_noexcept; -mi_decl_export void* mi__expand(void* p, size_t newsize) mi_attr_noexcept; -mi_decl_nodiscard mi_decl_export size_t mi_malloc_size(const void* p) mi_attr_noexcept; -mi_decl_nodiscard mi_decl_export size_t mi_malloc_usable_size(const void *p) mi_attr_noexcept; - -mi_decl_export int mi_posix_memalign(void** p, size_t alignment, size_t size) mi_attr_noexcept; -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_memalign(size_t alignment, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2) mi_attr_alloc_align(1); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_valloc(size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_pvalloc(size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_aligned_alloc(size_t alignment, size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(2) mi_attr_alloc_align(1); - -mi_decl_nodiscard mi_decl_export void* mi_reallocarray(void* p, size_t count, size_t size) mi_attr_noexcept mi_attr_alloc_size2(2,3); -mi_decl_nodiscard mi_decl_export void* mi_aligned_recalloc(void* p, size_t newcount, size_t size, size_t alignment) mi_attr_noexcept; -mi_decl_nodiscard mi_decl_export void* mi_aligned_offset_recalloc(void* p, size_t newcount, size_t size, size_t alignment, size_t offset) mi_attr_noexcept; - -mi_decl_nodiscard mi_decl_export mi_decl_restrict unsigned short* mi_wcsdup(const unsigned short* s) mi_attr_noexcept mi_attr_malloc; -mi_decl_nodiscard mi_decl_export mi_decl_restrict unsigned char* mi_mbsdup(const unsigned char* s) mi_attr_noexcept mi_attr_malloc; -mi_decl_export int mi_dupenv_s(char** buf, size_t* size, const char* name) mi_attr_noexcept; -mi_decl_export int mi_wdupenv_s(unsigned short** buf, size_t* size, const unsigned short* name) mi_attr_noexcept; - -mi_decl_export void mi_free_size(void* p, size_t size) mi_attr_noexcept; -mi_decl_export void mi_free_size_aligned(void* p, size_t size, size_t alignment) mi_attr_noexcept; -mi_decl_export void mi_free_aligned(void* p, size_t alignment) mi_attr_noexcept; - -// The `mi_new` wrappers implement C++ semantics on out-of-memory instead of directly returning `NULL`. -// (and call `std::get_new_handler` and potentially raise a `std::bad_alloc` exception). -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_new(size_t size) mi_attr_malloc mi_attr_alloc_size(1); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_new_aligned(size_t size, size_t alignment) mi_attr_malloc mi_attr_alloc_size(1) mi_attr_alloc_align(2); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_new_nothrow(size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_new_aligned_nothrow(size_t size, size_t alignment) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1) mi_attr_alloc_align(2); -mi_decl_nodiscard mi_decl_export mi_decl_restrict void* mi_new_n(size_t count, size_t size) mi_attr_malloc mi_attr_alloc_size2(1, 2); -mi_decl_nodiscard mi_decl_export void* mi_new_realloc(void* p, size_t newsize) mi_attr_alloc_size(2); -mi_decl_nodiscard mi_decl_export void* mi_new_reallocn(void* p, size_t newcount, size_t size) mi_attr_alloc_size2(2, 3); + // The `mi_new` wrappers implement C++ semantics on out-of-memory instead of directly returning `NULL`. + // (and call `std::get_new_handler` and potentially raise a `std::bad_alloc` exception). + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_new(size_t size) mi_attr_malloc mi_attr_alloc_size(1); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_new_aligned(size_t size, size_t alignment) mi_attr_malloc mi_attr_alloc_size(1) mi_attr_alloc_align(2); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_new_nothrow(size_t size) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_new_aligned_nothrow(size_t size, size_t alignment) mi_attr_noexcept mi_attr_malloc mi_attr_alloc_size(1) mi_attr_alloc_align(2); + mi_decl_nodiscard mi_decl_export mi_decl_restrict void *mi_new_n(size_t count, size_t size) mi_attr_malloc mi_attr_alloc_size2(1, 2); + mi_decl_nodiscard mi_decl_export void *mi_new_realloc(void *p, size_t newsize) mi_attr_alloc_size(2); + mi_decl_nodiscard mi_decl_export void *mi_new_reallocn(void *p, size_t newcount, size_t size) mi_attr_alloc_size2(2, 3); #ifdef __cplusplus } @@ -383,54 +379,77 @@ mi_decl_nodiscard mi_decl_export void* mi_new_reallocn(void* p, size_t newcount, // --------------------------------------------------------------------------------------------- #ifdef __cplusplus -#include // PTRDIFF_MAX -#if (__cplusplus >= 201103L) || (_MSC_VER > 1900) // C++11 -#include // std::true_type -#include // std::forward +#include // PTRDIFF_MAX +#if (__cplusplus >= 201103L) || (_MSC_VER > 1900) // C++11 +#include // std::true_type +#include // std::forward #endif -template struct mi_stl_allocator { - typedef T value_type; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - typedef value_type& reference; - typedef value_type const& const_reference; - typedef value_type* pointer; - typedef value_type const* const_pointer; - template struct rebind { typedef mi_stl_allocator other; }; +template +struct mi_stl_allocator +{ + typedef T value_type; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + typedef value_type &reference; + typedef value_type const &const_reference; + typedef value_type *pointer; + typedef value_type const *const_pointer; + template + struct rebind + { + typedef mi_stl_allocator other; + }; - mi_stl_allocator() mi_attr_noexcept = default; - mi_stl_allocator(const mi_stl_allocator&) mi_attr_noexcept = default; - template mi_stl_allocator(const mi_stl_allocator&) mi_attr_noexcept { } - mi_stl_allocator select_on_container_copy_construction() const { return *this; } - void deallocate(T* p, size_type) { mi_free(p); } + mi_stl_allocator() mi_attr_noexcept = default; + mi_stl_allocator(const mi_stl_allocator &) mi_attr_noexcept = default; + template + mi_stl_allocator(const mi_stl_allocator &) mi_attr_noexcept {} + mi_stl_allocator select_on_container_copy_construction() const { return *this; } + void deallocate(T *p, size_type) { mi_free(p); } - #if (__cplusplus >= 201703L) // C++17 - mi_decl_nodiscard T* allocate(size_type count) { return static_cast(mi_new_n(count, sizeof(T))); } - mi_decl_nodiscard T* allocate(size_type count, const void*) { return allocate(count); } - #else - mi_decl_nodiscard pointer allocate(size_type count, const void* = 0) { return static_cast(mi_new_n(count, sizeof(value_type))); } - #endif +#if (__cplusplus >= 201703L) // C++17 + mi_decl_nodiscard T *allocate(size_type count) + { + return static_cast(mi_new_n(count, sizeof(T))); + } + mi_decl_nodiscard T *allocate(size_type count, const void *) { return allocate(count); } +#else + mi_decl_nodiscard pointer allocate(size_type count, const void * = 0) + { + return static_cast(mi_new_n(count, sizeof(value_type))); + } +#endif - #if ((__cplusplus >= 201103L) || (_MSC_VER > 1900)) // C++11 +#if ((__cplusplus >= 201103L) || (_MSC_VER > 1900)) // C++11 using propagate_on_container_copy_assignment = std::true_type; using propagate_on_container_move_assignment = std::true_type; - using propagate_on_container_swap = std::true_type; - using is_always_equal = std::true_type; - template void construct(U* p, Args&& ...args) { ::new(p) U(std::forward(args)...); } - template void destroy(U* p) mi_attr_noexcept { p->~U(); } - #else - void construct(pointer p, value_type const& val) { ::new(p) value_type(val); } + using propagate_on_container_swap = std::true_type; + using is_always_equal = std::true_type; + template + void construct(U *p, Args &&...args) { ::new (p) U(std::forward(args)...); } + template + void destroy(U *p) mi_attr_noexcept { p->~U(); } +#else + void construct(pointer p, value_type const &val) + { + ::new (p) value_type(val); + } void destroy(pointer p) { p->~value_type(); } - #endif +#endif - size_type max_size() const mi_attr_noexcept { return (PTRDIFF_MAX/sizeof(value_type)); } - pointer address(reference x) const { return &x; } - const_pointer address(const_reference x) const { return &x; } + size_type max_size() const mi_attr_noexcept + { + return (PTRDIFF_MAX / sizeof(value_type)); + } + pointer address(reference x) const { return &x; } + const_pointer address(const_reference x) const { return &x; } }; -template bool operator==(const mi_stl_allocator& , const mi_stl_allocator& ) mi_attr_noexcept { return true; } -template bool operator!=(const mi_stl_allocator& , const mi_stl_allocator& ) mi_attr_noexcept { return false; } +template +bool operator==(const mi_stl_allocator &, const mi_stl_allocator &) mi_attr_noexcept { return true; } +template +bool operator!=(const mi_stl_allocator &, const mi_stl_allocator &) mi_attr_noexcept { return false; } #endif // __cplusplus #endif diff --git a/libmimalloc.a b/libmimalloc.a new file mode 100644 index 00000000..cee4df94 Binary files /dev/null and b/libmimalloc.a differ diff --git a/libmimalloc.so b/libmimalloc.so new file mode 120000 index 00000000..2f8a2656 --- /dev/null +++ b/libmimalloc.so @@ -0,0 +1 @@ +libmimalloc.so.1.7 \ No newline at end of file diff --git a/libmimalloc.so.1.7 b/libmimalloc.so.1.7 new file mode 100755 index 00000000..9aabf70a Binary files /dev/null and b/libmimalloc.so.1.7 differ diff --git a/mimalloc-test-api b/mimalloc-test-api new file mode 100755 index 00000000..3d8b65af Binary files /dev/null and b/mimalloc-test-api differ diff --git a/mimalloc-test-stress b/mimalloc-test-stress new file mode 100755 index 00000000..39b6c6ee Binary files /dev/null and b/mimalloc-test-stress differ diff --git a/src/heap.c b/src/heap.c index a9799dde..9439f7d3 100644 --- a/src/heap.c +++ b/src/heap.c @@ -9,10 +9,10 @@ terms of the MIT license. A copy of the license can be found in the file #include "mimalloc-internal.h" #include "mimalloc-atomic.h" -#include // memset, memcpy +#include // memset, memcpy #if defined(_MSC_VER) && (_MSC_VER < 1920) -#pragma warning(disable:4204) // non-constant aggregate initializer +#pragma warning(disable : 4204) // non-constant aggregate initializer #endif /* ----------------------------------------------------------- @@ -20,26 +20,30 @@ terms of the MIT license. A copy of the license can be found in the file ----------------------------------------------------------- */ // return `true` if ok, `false` to break -typedef bool (heap_page_visitor_fun)(mi_heap_t* heap, mi_page_queue_t* pq, mi_page_t* page, void* arg1, void* arg2); +typedef bool(heap_page_visitor_fun)(mi_heap_t *heap, mi_page_queue_t *pq, mi_page_t *page, void *arg1, void *arg2); // Visit all pages in a heap; returns `false` if break was called. -static bool mi_heap_visit_pages(mi_heap_t* heap, heap_page_visitor_fun* fn, void* arg1, void* arg2) +static bool mi_heap_visit_pages(mi_heap_t *heap, heap_page_visitor_fun *fn, void *arg1, void *arg2) { - if (heap==NULL || heap->page_count==0) return 0; + if (heap == NULL || heap->page_count == 0) + return 0; - // visit all pages - #if MI_DEBUG>1 +// visit all pages +#if MI_DEBUG > 1 size_t total = heap->page_count; - #endif +#endif size_t count = 0; - for (size_t i = 0; i <= MI_BIN_FULL; i++) { - mi_page_queue_t* pq = &heap->pages[i]; - mi_page_t* page = pq->first; - while(page != NULL) { - mi_page_t* next = page->next; // save next in case the page gets removed from the queue + for (size_t i = 0; i <= MI_BIN_FULL; i++) + { + mi_page_queue_t *pq = &heap->pages[i]; + mi_page_t *page = pq->first; + while (page != NULL) + { + mi_page_t *next = page->next; // save next in case the page gets removed from the queue mi_assert_internal(mi_page_heap(page) == heap); count++; - if (!fn(heap, pq, page, arg1, arg2)) return false; + if (!fn(heap, pq, page, arg1, arg2)) + return false; page = next; // and continue } } @@ -47,30 +51,28 @@ static bool mi_heap_visit_pages(mi_heap_t* heap, heap_page_visitor_fun* fn, void return true; } - -#if MI_DEBUG>=2 -static bool mi_heap_page_is_valid(mi_heap_t* heap, mi_page_queue_t* pq, mi_page_t* page, void* arg1, void* arg2) { +#if MI_DEBUG >= 2 +static bool mi_heap_page_is_valid(mi_heap_t *heap, mi_page_queue_t *pq, mi_page_t *page, void *arg1, void *arg2) +{ UNUSED(arg1); UNUSED(arg2); UNUSED(pq); mi_assert_internal(mi_page_heap(page) == heap); - mi_segment_t* segment = _mi_page_segment(page); + mi_segment_t *segment = _mi_page_segment(page); mi_assert_internal(segment->thread_id == heap->thread_id); mi_assert_expensive(_mi_page_is_valid(page)); return true; } #endif -#if MI_DEBUG>=3 -static bool mi_heap_is_valid(mi_heap_t* heap) { - mi_assert_internal(heap!=NULL); +#if MI_DEBUG >= 3 +static bool mi_heap_is_valid(mi_heap_t *heap) +{ + mi_assert_internal(heap != NULL); mi_heap_visit_pages(heap, &mi_heap_page_is_valid, NULL, NULL); return true; } #endif - - - /* ----------------------------------------------------------- "Collect" pages by migrating `local_free` and `thread_free` lists and freeing empty pages. This is done when a thread @@ -78,32 +80,36 @@ static bool mi_heap_is_valid(mi_heap_t* heap) { blocks alive) ----------------------------------------------------------- */ -typedef enum mi_collect_e { +typedef enum mi_collect_e +{ MI_NORMAL, MI_FORCE, MI_ABANDON } mi_collect_t; - -static bool mi_heap_page_collect(mi_heap_t* heap, mi_page_queue_t* pq, mi_page_t* page, void* arg_collect, void* arg2 ) { +static bool mi_heap_page_collect(mi_heap_t *heap, mi_page_queue_t *pq, mi_page_t *page, void *arg_collect, void *arg2) +{ UNUSED(arg2); UNUSED(heap); mi_assert_internal(mi_heap_page_is_valid(heap, pq, page, NULL, NULL)); - mi_collect_t collect = *((mi_collect_t*)arg_collect); + mi_collect_t collect = *((mi_collect_t *)arg_collect); _mi_page_free_collect(page, collect >= MI_FORCE); - if (mi_page_all_free(page)) { - // no more used blocks, free the page. + if (mi_page_all_free(page)) + { + // no more used blocks, free the page. // note: this will free retired pages as well. _mi_page_free(page, pq, collect >= MI_FORCE); } - else if (collect == MI_ABANDON) { + else if (collect == MI_ABANDON) + { // still used blocks but the thread is done; abandon the page _mi_page_abandon(page, pq); } return true; // don't break } -static bool mi_heap_page_never_delayed_free(mi_heap_t* heap, mi_page_queue_t* pq, mi_page_t* page, void* arg1, void* arg2) { +static bool mi_heap_page_never_delayed_free(mi_heap_t *heap, mi_page_queue_t *pq, mi_page_t *page, void *arg1, void *arg2) +{ UNUSED(arg1); UNUSED(arg2); UNUSED(heap); @@ -112,27 +118,29 @@ static bool mi_heap_page_never_delayed_free(mi_heap_t* heap, mi_page_queue_t* pq return true; // don't break } -static void mi_heap_collect_ex(mi_heap_t* heap, mi_collect_t collect) +static void mi_heap_collect_ex(mi_heap_t *heap, mi_collect_t collect) { - if (heap==NULL || !mi_heap_is_initialized(heap)) return; + if (heap == NULL || !mi_heap_is_initialized(heap)) + return; _mi_deferred_free(heap, collect >= MI_FORCE); - // note: never reclaim on collect but leave it to threads that need storage to reclaim + // note: never reclaim on collect but leave it to threads that need storage to reclaim if ( - #ifdef NDEBUG +#ifdef NDEBUG collect == MI_FORCE - #else +#else collect >= MI_FORCE - #endif - && _mi_is_main_thread() && mi_heap_is_backing(heap) && !heap->no_reclaim) +#endif + && _mi_is_main_thread() && mi_heap_is_backing(heap) && !heap->no_reclaim) { // the main thread is abandoned (end-of-program), try to reclaim all abandoned segments. // if all memory is freed by now, all segments should be freed. _mi_abandoned_reclaim_all(heap, &heap->tld->segments); } - + // if abandoning, mark all pages to no longer add to delayed_free - if (collect == MI_ABANDON) { + if (collect == MI_ABANDON) + { mi_heap_visit_pages(heap, &mi_heap_page_never_delayed_free, NULL, NULL); } @@ -145,74 +153,85 @@ static void mi_heap_collect_ex(mi_heap_t* heap, mi_collect_t collect) // collect all pages owned by this thread mi_heap_visit_pages(heap, &mi_heap_page_collect, &collect, NULL); - mi_assert_internal( collect != MI_ABANDON || mi_atomic_load_ptr_acquire(mi_block_t,&heap->thread_delayed_free) == NULL ); + mi_assert_internal(collect != MI_ABANDON || mi_atomic_load_ptr_acquire(mi_block_t, &heap->thread_delayed_free) == NULL); // collect segment caches - if (collect >= MI_FORCE) { + if (collect >= MI_FORCE) + { _mi_segment_thread_collect(&heap->tld->segments); } // collect regions on program-exit (or shared library unload) - if (collect >= MI_FORCE && _mi_is_main_thread() && mi_heap_is_backing(heap)) { + if (collect >= MI_FORCE && _mi_is_main_thread() && mi_heap_is_backing(heap)) + { _mi_mem_collect(&heap->tld->os); } } -void _mi_heap_collect_abandon(mi_heap_t* heap) { +void _mi_heap_collect_abandon(mi_heap_t *heap) +{ mi_heap_collect_ex(heap, MI_ABANDON); } -void mi_heap_collect(mi_heap_t* heap, bool force) mi_attr_noexcept { +void mi_heap_collect(mi_heap_t *heap, bool force) mi_attr_noexcept +{ mi_heap_collect_ex(heap, (force ? MI_FORCE : MI_NORMAL)); } -void mi_collect(bool force) mi_attr_noexcept { +void mi_collect(bool force) mi_attr_noexcept +{ mi_heap_collect(mi_get_default_heap(), force); } - /* ----------------------------------------------------------- Heap new ----------------------------------------------------------- */ -mi_heap_t* mi_heap_get_default(void) { +mi_heap_t *mi_heap_get_default(void) +{ mi_thread_init(); return mi_get_default_heap(); } -mi_heap_t* mi_heap_get_backing(void) { - mi_heap_t* heap = mi_heap_get_default(); - mi_assert_internal(heap!=NULL); - mi_heap_t* bheap = heap->tld->heap_backing; - mi_assert_internal(bheap!=NULL); +mi_heap_t *mi_heap_get_backing(void) +{ + mi_heap_t *heap = mi_heap_get_default(); + mi_assert_internal(heap != NULL); + mi_heap_t *bheap = heap->tld->heap_backing; + mi_assert_internal(bheap != NULL); mi_assert_internal(bheap->thread_id == _mi_thread_id()); return bheap; } -mi_heap_t* mi_heap_new(void) { - mi_heap_t* bheap = mi_heap_get_backing(); - mi_heap_t* heap = mi_heap_malloc_tp(bheap, mi_heap_t); // todo: OS allocate in secure mode? - if (heap==NULL) return NULL; +mi_heap_t *mi_heap_new(void) +{ + mi_heap_t *bheap = mi_heap_get_backing(); + mi_heap_t *heap = mi_heap_malloc_tp(bheap, mi_heap_t); // todo: OS allocate in secure mode? + if (heap == NULL) + return NULL; _mi_memcpy_aligned(heap, &_mi_heap_empty, sizeof(mi_heap_t)); heap->tld = bheap->tld; heap->thread_id = _mi_thread_id(); _mi_random_split(&bheap->random, &heap->random); - heap->cookie = _mi_heap_random_next(heap) | 1; + heap->cookie = _mi_heap_random_next(heap) | 1; heap->keys[0] = _mi_heap_random_next(heap); heap->keys[1] = _mi_heap_random_next(heap); - heap->no_reclaim = true; // don't reclaim abandoned pages or otherwise destroy is unsafe + heap->no_reclaim = true; // don't reclaim abandoned pages or otherwise destroy is unsafe // push on the thread local heaps list heap->next = heap->tld->heaps; heap->tld->heaps = heap; + heap->deferred_free = NULL; return heap; } -uintptr_t _mi_heap_random_next(mi_heap_t* heap) { +uintptr_t _mi_heap_random_next(mi_heap_t *heap) +{ return _mi_random_next(&heap->random); } // zero out the page queues -static void mi_heap_reset_pages(mi_heap_t* heap) { +static void mi_heap_reset_pages(mi_heap_t *heap) +{ mi_assert_internal(heap != NULL); mi_assert_internal(mi_heap_is_initialized(heap)); // TODO: copy full empty heap instead? @@ -226,29 +245,41 @@ static void mi_heap_reset_pages(mi_heap_t* heap) { } // called from `mi_heap_destroy` and `mi_heap_delete` to free the internal heap resources. -static void mi_heap_free(mi_heap_t* heap) { +static void mi_heap_free(mi_heap_t *heap) +{ mi_assert(heap != NULL); mi_assert_internal(mi_heap_is_initialized(heap)); - if (heap==NULL || !mi_heap_is_initialized(heap)) return; - if (mi_heap_is_backing(heap)) return; // dont free the backing heap + if (heap == NULL || !mi_heap_is_initialized(heap)) + return; + if (mi_heap_is_backing(heap)) + return; // dont free the backing heap // reset default - if (mi_heap_is_default(heap)) { + if (mi_heap_is_default(heap)) + { _mi_heap_set_default_direct(heap->tld->heap_backing); } // remove ourselves from the thread local heaps list // linear search but we expect the number of heaps to be relatively small - mi_heap_t* prev = NULL; - mi_heap_t* curr = heap->tld->heaps; - while (curr != heap && curr != NULL) { + mi_heap_t *prev = NULL; + mi_heap_t *curr = heap->tld->heaps; + while (curr != heap && curr != NULL) + { prev = curr; curr = curr->next; } mi_assert_internal(curr == heap); - if (curr == heap) { - if (prev != NULL) { prev->next = heap->next; } - else { heap->tld->heaps = heap->next; } + if (curr == heap) + { + if (prev != NULL) + { + prev->next = heap->next; + } + else + { + heap->tld->heaps = heap->next; + } } mi_assert_internal(heap->tld->heaps != NULL); @@ -256,12 +287,12 @@ static void mi_heap_free(mi_heap_t* heap) { mi_free(heap); } - /* ----------------------------------------------------------- Heap destroy ----------------------------------------------------------- */ -static bool _mi_heap_page_destroy(mi_heap_t* heap, mi_page_queue_t* pq, mi_page_t* page, void* arg1, void* arg2) { +static bool _mi_heap_page_destroy(mi_heap_t *heap, mi_page_queue_t *pq, mi_page_t *page, void *arg1, void *arg2) +{ UNUSED(arg1); UNUSED(arg2); UNUSED(heap); @@ -272,24 +303,28 @@ static bool _mi_heap_page_destroy(mi_heap_t* heap, mi_page_queue_t* pq, mi_page_ // stats const size_t bsize = mi_page_block_size(page); - if (bsize > MI_LARGE_OBJ_SIZE_MAX) { - if (bsize > MI_HUGE_OBJ_SIZE_MAX) { + if (bsize > MI_LARGE_OBJ_SIZE_MAX) + { + if (bsize > MI_HUGE_OBJ_SIZE_MAX) + { mi_heap_stat_decrease(heap, giant, bsize); } - else { + else + { mi_heap_stat_decrease(heap, huge, bsize); } } #if (MI_STAT) - _mi_page_free_collect(page, false); // update used count + _mi_page_free_collect(page, false); // update used count const size_t inuse = page->used; - if (bsize <= MI_LARGE_OBJ_SIZE_MAX) { + if (bsize <= MI_LARGE_OBJ_SIZE_MAX) + { mi_heap_stat_decrease(heap, normal, bsize * inuse); -#if (MI_STAT>1) +#if (MI_STAT > 1) mi_heap_stat_decrease(heap, normal_bins[_mi_bin(bsize)], inuse); #endif } - mi_heap_stat_decrease(heap, malloc, bsize * inuse); // todo: off for aligned blocks... + mi_heap_stat_decrease(heap, malloc, bsize * inuse); // todo: off for aligned blocks... #endif /// pretend it is all free now @@ -300,146 +335,163 @@ static bool _mi_heap_page_destroy(mi_heap_t* heap, mi_page_queue_t* pq, mi_page_ // mi_page_free(page,false); page->next = NULL; page->prev = NULL; - _mi_segment_page_free(page,false /* no force? */, &heap->tld->segments); + _mi_segment_page_free(page, false /* no force? */, &heap->tld->segments); return true; // keep going } -void _mi_heap_destroy_pages(mi_heap_t* heap) { +void _mi_heap_destroy_pages(mi_heap_t *heap) +{ mi_heap_visit_pages(heap, &_mi_heap_page_destroy, NULL, NULL); mi_heap_reset_pages(heap); } -void mi_heap_destroy(mi_heap_t* heap) { +void mi_heap_destroy(mi_heap_t *heap) +{ mi_assert(heap != NULL); mi_assert(mi_heap_is_initialized(heap)); mi_assert(heap->no_reclaim); mi_assert_expensive(mi_heap_is_valid(heap)); - if (heap==NULL || !mi_heap_is_initialized(heap)) return; - if (!heap->no_reclaim) { + if (heap == NULL || !mi_heap_is_initialized(heap)) + return; + if (!heap->no_reclaim) + { // don't free in case it may contain reclaimed pages mi_heap_delete(heap); } - else { + else + { // free all pages _mi_heap_destroy_pages(heap); mi_heap_free(heap); } } - - /* ----------------------------------------------------------- Safe Heap delete ----------------------------------------------------------- */ // Tranfer the pages from one heap to the other -static void mi_heap_absorb(mi_heap_t* heap, mi_heap_t* from) { - mi_assert_internal(heap!=NULL); - if (from==NULL || from->page_count == 0) return; +static void mi_heap_absorb(mi_heap_t *heap, mi_heap_t *from) +{ + mi_assert_internal(heap != NULL); + if (from == NULL || from->page_count == 0) + return; // reduce the size of the delayed frees _mi_heap_delayed_free(from); - - // transfer all pages by appending the queues; this will set a new heap field + + // transfer all pages by appending the queues; this will set a new heap field // so threads may do delayed frees in either heap for a while. // note: appending waits for each page to not be in the `MI_DELAYED_FREEING` state // so after this only the new heap will get delayed frees - for (size_t i = 0; i <= MI_BIN_FULL; i++) { - mi_page_queue_t* pq = &heap->pages[i]; - mi_page_queue_t* append = &from->pages[i]; + for (size_t i = 0; i <= MI_BIN_FULL; i++) + { + mi_page_queue_t *pq = &heap->pages[i]; + mi_page_queue_t *append = &from->pages[i]; size_t pcount = _mi_page_queue_append(heap, pq, append); heap->page_count += pcount; from->page_count -= pcount; } mi_assert_internal(from->page_count == 0); - // and do outstanding delayed frees in the `from` heap + // and do outstanding delayed frees in the `from` heap // note: be careful here as the `heap` field in all those pages no longer point to `from`, - // turns out to be ok as `_mi_heap_delayed_free` only visits the list and calls a + // turns out to be ok as `_mi_heap_delayed_free` only visits the list and calls a // the regular `_mi_free_delayed_block` which is safe. - _mi_heap_delayed_free(from); - mi_assert_internal(mi_atomic_load_ptr_relaxed(mi_block_t,&from->thread_delayed_free) == NULL); + _mi_heap_delayed_free(from); + mi_assert_internal(mi_atomic_load_ptr_relaxed(mi_block_t, &from->thread_delayed_free) == NULL); // and reset the `from` heap - mi_heap_reset_pages(from); + mi_heap_reset_pages(from); } // Safe delete a heap without freeing any still allocated blocks in that heap. -void mi_heap_delete(mi_heap_t* heap) +void mi_heap_delete(mi_heap_t *heap) { mi_assert(heap != NULL); mi_assert(mi_heap_is_initialized(heap)); mi_assert_expensive(mi_heap_is_valid(heap)); - if (heap==NULL || !mi_heap_is_initialized(heap)) return; + if (heap == NULL || !mi_heap_is_initialized(heap)) + return; - if (!mi_heap_is_backing(heap)) { + if (!mi_heap_is_backing(heap)) + { // tranfer still used pages to the backing heap mi_heap_absorb(heap->tld->heap_backing, heap); } - else { + else + { // the backing heap abandons its pages _mi_heap_collect_abandon(heap); } - mi_assert_internal(heap->page_count==0); + mi_assert_internal(heap->page_count == 0); mi_heap_free(heap); } -mi_heap_t* mi_heap_set_default(mi_heap_t* heap) { +mi_heap_t *mi_heap_set_default(mi_heap_t *heap) +{ mi_assert(heap != NULL); mi_assert(mi_heap_is_initialized(heap)); - if (heap==NULL || !mi_heap_is_initialized(heap)) return NULL; + if (heap == NULL || !mi_heap_is_initialized(heap)) + return NULL; mi_assert_expensive(mi_heap_is_valid(heap)); - mi_heap_t* old = mi_get_default_heap(); + mi_heap_t *old = mi_get_default_heap(); _mi_heap_set_default_direct(heap); return old; } - - - /* ----------------------------------------------------------- Analysis ----------------------------------------------------------- */ // static since it is not thread safe to access heaps from other threads. -static mi_heap_t* mi_heap_of_block(const void* p) { - if (p == NULL) return NULL; - mi_segment_t* segment = _mi_ptr_segment(p); +static mi_heap_t *mi_heap_of_block(const void *p) +{ + if (p == NULL) + return NULL; + mi_segment_t *segment = _mi_ptr_segment(p); bool valid = (_mi_ptr_cookie(segment) == segment->cookie); mi_assert_internal(valid); - if (mi_unlikely(!valid)) return NULL; - return mi_page_heap(_mi_segment_page_of(segment,p)); + if (mi_unlikely(!valid)) + return NULL; + return mi_page_heap(_mi_segment_page_of(segment, p)); } -bool mi_heap_contains_block(mi_heap_t* heap, const void* p) { +bool mi_heap_contains_block(mi_heap_t *heap, const void *p) +{ mi_assert(heap != NULL); - if (heap==NULL || !mi_heap_is_initialized(heap)) return false; + if (heap == NULL || !mi_heap_is_initialized(heap)) + return false; return (heap == mi_heap_of_block(p)); } - -static bool mi_heap_page_check_owned(mi_heap_t* heap, mi_page_queue_t* pq, mi_page_t* page, void* p, void* vfound) { +static bool mi_heap_page_check_owned(mi_heap_t *heap, mi_page_queue_t *pq, mi_page_t *page, void *p, void *vfound) +{ UNUSED(heap); UNUSED(pq); - bool* found = (bool*)vfound; - mi_segment_t* segment = _mi_page_segment(page); - void* start = _mi_page_start(segment, page, NULL); - void* end = (uint8_t*)start + (page->capacity * mi_page_block_size(page)); + bool *found = (bool *)vfound; + mi_segment_t *segment = _mi_page_segment(page); + void *start = _mi_page_start(segment, page, NULL); + void *end = (uint8_t *)start + (page->capacity * mi_page_block_size(page)); *found = (p >= start && p < end); return (!*found); // continue if not found } -bool mi_heap_check_owned(mi_heap_t* heap, const void* p) { +bool mi_heap_check_owned(mi_heap_t *heap, const void *p) +{ mi_assert(heap != NULL); - if (heap==NULL || !mi_heap_is_initialized(heap)) return false; - if (((uintptr_t)p & (MI_INTPTR_SIZE - 1)) != 0) return false; // only aligned pointers + if (heap == NULL || !mi_heap_is_initialized(heap)) + return false; + if (((uintptr_t)p & (MI_INTPTR_SIZE - 1)) != 0) + return false; // only aligned pointers bool found = false; - mi_heap_visit_pages(heap, &mi_heap_page_check_owned, (void*)p, &found); + mi_heap_visit_pages(heap, &mi_heap_page_check_owned, (void *)p, &found); return found; } -bool mi_check_owned(const void* p) { +bool mi_check_owned(const void *p) +{ return mi_heap_check_owned(mi_get_default_heap(), p); } @@ -450,46 +502,53 @@ bool mi_check_owned(const void* p) { ----------------------------------------------------------- */ // Separate struct to keep `mi_page_t` out of the public interface -typedef struct mi_heap_area_ex_s { +typedef struct mi_heap_area_ex_s +{ mi_heap_area_t area; - mi_page_t* page; + mi_page_t *page; } mi_heap_area_ex_t; -static bool mi_heap_area_visit_blocks(const mi_heap_area_ex_t* xarea, mi_block_visit_fun* visitor, void* arg) { +static bool mi_heap_area_visit_blocks(const mi_heap_area_ex_t *xarea, mi_block_visit_fun *visitor, void *arg) +{ mi_assert(xarea != NULL); - if (xarea==NULL) return true; - const mi_heap_area_t* area = &xarea->area; - mi_page_t* page = xarea->page; + if (xarea == NULL) + return true; + const mi_heap_area_t *area = &xarea->area; + mi_page_t *page = xarea->page; mi_assert(page != NULL); - if (page == NULL) return true; + if (page == NULL) + return true; - _mi_page_free_collect(page,true); + _mi_page_free_collect(page, true); mi_assert_internal(page->local_free == NULL); - if (page->used == 0) return true; + if (page->used == 0) + return true; const size_t bsize = mi_page_block_size(page); - size_t psize; - uint8_t* pstart = _mi_page_start(_mi_page_segment(page), page, &psize); + size_t psize; + uint8_t *pstart = _mi_page_start(_mi_page_segment(page), page, &psize); - if (page->capacity == 1) { + if (page->capacity == 1) + { // optimize page with one block mi_assert_internal(page->used == 1 && page->free == NULL); return visitor(mi_page_heap(page), area, pstart, bsize, arg); } - // create a bitmap of free blocks. - #define MI_MAX_BLOCKS (MI_SMALL_PAGE_SIZE / sizeof(void*)) +// create a bitmap of free blocks. +#define MI_MAX_BLOCKS (MI_SMALL_PAGE_SIZE / sizeof(void *)) uintptr_t free_map[MI_MAX_BLOCKS / sizeof(uintptr_t)]; memset(free_map, 0, sizeof(free_map)); size_t free_count = 0; - for (mi_block_t* block = page->free; block != NULL; block = mi_block_next(page,block)) { + for (mi_block_t *block = page->free; block != NULL; block = mi_block_next(page, block)) + { free_count++; - mi_assert_internal((uint8_t*)block >= pstart && (uint8_t*)block < (pstart + psize)); - size_t offset = (uint8_t*)block - pstart; + mi_assert_internal((uint8_t *)block >= pstart && (uint8_t *)block < (pstart + psize)); + size_t offset = (uint8_t *)block - pstart; mi_assert_internal(offset % bsize == 0); - size_t blockidx = offset / bsize; // Todo: avoid division? - mi_assert_internal( blockidx < MI_MAX_BLOCKS); + size_t blockidx = offset / bsize; // Todo: avoid division? + mi_assert_internal(blockidx < MI_MAX_BLOCKS); size_t bitidx = (blockidx / sizeof(uintptr_t)); size_t bit = blockidx - (bitidx * sizeof(uintptr_t)); free_map[bitidx] |= ((uintptr_t)1 << bit); @@ -498,30 +557,34 @@ static bool mi_heap_area_visit_blocks(const mi_heap_area_ex_t* xarea, mi_block_v // walk through all blocks skipping the free ones size_t used_count = 0; - for (size_t i = 0; i < page->capacity; i++) { + for (size_t i = 0; i < page->capacity; i++) + { size_t bitidx = (i / sizeof(uintptr_t)); size_t bit = i - (bitidx * sizeof(uintptr_t)); uintptr_t m = free_map[bitidx]; - if (bit == 0 && m == UINTPTR_MAX) { + if (bit == 0 && m == UINTPTR_MAX) + { i += (sizeof(uintptr_t) - 1); // skip a run of free blocks } - else if ((m & ((uintptr_t)1 << bit)) == 0) { + else if ((m & ((uintptr_t)1 << bit)) == 0) + { used_count++; - uint8_t* block = pstart + (i * bsize); - if (!visitor(mi_page_heap(page), area, block, bsize, arg)) return false; + uint8_t *block = pstart + (i * bsize); + if (!visitor(mi_page_heap(page), area, block, bsize, arg)) + return false; } } mi_assert_internal(page->used == used_count); return true; } -typedef bool (mi_heap_area_visit_fun)(const mi_heap_t* heap, const mi_heap_area_ex_t* area, void* arg); +typedef bool(mi_heap_area_visit_fun)(const mi_heap_t *heap, const mi_heap_area_ex_t *area, void *arg); - -static bool mi_heap_visit_areas_page(mi_heap_t* heap, mi_page_queue_t* pq, mi_page_t* page, void* vfun, void* arg) { +static bool mi_heap_visit_areas_page(mi_heap_t *heap, mi_page_queue_t *pq, mi_page_t *page, void *vfun, void *arg) +{ UNUSED(heap); UNUSED(pq); - mi_heap_area_visit_fun* fun = (mi_heap_area_visit_fun*)vfun; + mi_heap_area_visit_fun *fun = (mi_heap_area_visit_fun *)vfun; mi_heap_area_ex_t xarea; const size_t bsize = mi_page_block_size(page); xarea.page = page; @@ -534,31 +597,45 @@ static bool mi_heap_visit_areas_page(mi_heap_t* heap, mi_page_queue_t* pq, mi_pa } // Visit all heap pages as areas -static bool mi_heap_visit_areas(const mi_heap_t* heap, mi_heap_area_visit_fun* visitor, void* arg) { - if (visitor == NULL) return false; - return mi_heap_visit_pages((mi_heap_t*)heap, &mi_heap_visit_areas_page, (void*)(visitor), arg); // note: function pointer to void* :-{ +static bool mi_heap_visit_areas(const mi_heap_t *heap, mi_heap_area_visit_fun *visitor, void *arg) +{ + if (visitor == NULL) + return false; + return mi_heap_visit_pages((mi_heap_t *)heap, &mi_heap_visit_areas_page, (void *)(visitor), arg); // note: function pointer to void* :-{ } // Just to pass arguments -typedef struct mi_visit_blocks_args_s { - bool visit_blocks; - mi_block_visit_fun* visitor; - void* arg; +typedef struct mi_visit_blocks_args_s +{ + bool visit_blocks; + mi_block_visit_fun *visitor; + void *arg; } mi_visit_blocks_args_t; -static bool mi_heap_area_visitor(const mi_heap_t* heap, const mi_heap_area_ex_t* xarea, void* arg) { - mi_visit_blocks_args_t* args = (mi_visit_blocks_args_t*)arg; - if (!args->visitor(heap, &xarea->area, NULL, xarea->area.block_size, args->arg)) return false; - if (args->visit_blocks) { +static bool mi_heap_area_visitor(const mi_heap_t *heap, const mi_heap_area_ex_t *xarea, void *arg) +{ + mi_visit_blocks_args_t *args = (mi_visit_blocks_args_t *)arg; + if (!args->visitor(heap, &xarea->area, NULL, xarea->area.block_size, args->arg)) + return false; + if (args->visit_blocks) + { return mi_heap_area_visit_blocks(xarea, args->visitor, args->arg); } - else { + else + { return true; } } // Visit all blocks in a heap -bool mi_heap_visit_blocks(const mi_heap_t* heap, bool visit_blocks, mi_block_visit_fun* visitor, void* arg) { - mi_visit_blocks_args_t args = { visit_blocks, visitor, arg }; +bool mi_heap_visit_blocks(const mi_heap_t *heap, bool visit_blocks, mi_block_visit_fun *visitor, void *arg) +{ + mi_visit_blocks_args_t args = {visit_blocks, visitor, arg}; return mi_heap_visit_areas(heap, &mi_heap_area_visitor, &args); } + +void mi_heap_register_local_deferred_free(mi_heap_t *heap, mi_local_deferred_free_fun *deferred_free, void *arg) +{ + heap->deferred_free = (void *)deferred_free; + heap->deferred_arg = arg; +} \ No newline at end of file diff --git a/src/init.c b/src/init.c index f635cf98..fe14ecf2 100644 --- a/src/init.c +++ b/src/init.c @@ -7,76 +7,92 @@ terms of the MIT license. A copy of the license can be found in the file #include "mimalloc.h" #include "mimalloc-internal.h" -#include // memcpy, memset -#include // atexit +#include // memcpy, memset +#include // atexit // Empty page used to initialize the small free pages array const mi_page_t _mi_page_empty = { - 0, false, false, false, false, - 0, // capacity - 0, // reserved capacity - { 0 }, // flags - false, // is_zero - 0, // retire_expire - NULL, // free - #if MI_ENCODE_FREELIST - { 0, 0 }, - #endif - 0, // used - 0, // xblock_size - NULL, // local_free - ATOMIC_VAR_INIT(0), // xthread_free - ATOMIC_VAR_INIT(0), // xheap - NULL, NULL -}; + 0, false, false, false, false, + 0, // capacity + 0, // reserved capacity + {0}, // flags + false, // is_zero + 0, // retire_expire + NULL, // free +#if MI_ENCODE_FREELIST + {0, 0}, +#endif + 0, // used + 0, // xblock_size + NULL, // local_free + ATOMIC_VAR_INIT(0), // xthread_free + ATOMIC_VAR_INIT(0), // xheap + NULL, + NULL}; -#define MI_PAGE_EMPTY() ((mi_page_t*)&_mi_page_empty) +#define MI_PAGE_EMPTY() ((mi_page_t *)&_mi_page_empty) -#if (MI_PADDING>0) && (MI_INTPTR_SIZE >= 8) -#define MI_SMALL_PAGES_EMPTY { MI_INIT128(MI_PAGE_EMPTY), MI_PAGE_EMPTY(), MI_PAGE_EMPTY() } -#elif (MI_PADDING>0) -#define MI_SMALL_PAGES_EMPTY { MI_INIT128(MI_PAGE_EMPTY), MI_PAGE_EMPTY(), MI_PAGE_EMPTY(), MI_PAGE_EMPTY() } +#if (MI_PADDING > 0) && (MI_INTPTR_SIZE >= 8) +#define MI_SMALL_PAGES_EMPTY \ + { \ + MI_INIT128(MI_PAGE_EMPTY), MI_PAGE_EMPTY(), MI_PAGE_EMPTY() \ + } +#elif (MI_PADDING > 0) +#define MI_SMALL_PAGES_EMPTY \ + { \ + MI_INIT128(MI_PAGE_EMPTY), MI_PAGE_EMPTY(), MI_PAGE_EMPTY(), MI_PAGE_EMPTY() \ + } #else -#define MI_SMALL_PAGES_EMPTY { MI_INIT128(MI_PAGE_EMPTY), MI_PAGE_EMPTY() } +#define MI_SMALL_PAGES_EMPTY \ + { \ + MI_INIT128(MI_PAGE_EMPTY), MI_PAGE_EMPTY() \ + } #endif - // Empty page queues for every bin -#define QNULL(sz) { NULL, NULL, (sz)*sizeof(uintptr_t) } -#define MI_PAGE_QUEUES_EMPTY \ - { QNULL(1), \ - QNULL( 1), QNULL( 2), QNULL( 3), QNULL( 4), QNULL( 5), QNULL( 6), QNULL( 7), QNULL( 8), /* 8 */ \ - QNULL( 10), QNULL( 12), QNULL( 14), QNULL( 16), QNULL( 20), QNULL( 24), QNULL( 28), QNULL( 32), /* 16 */ \ - QNULL( 40), QNULL( 48), QNULL( 56), QNULL( 64), QNULL( 80), QNULL( 96), QNULL( 112), QNULL( 128), /* 24 */ \ - QNULL( 160), QNULL( 192), QNULL( 224), QNULL( 256), QNULL( 320), QNULL( 384), QNULL( 448), QNULL( 512), /* 32 */ \ - QNULL( 640), QNULL( 768), QNULL( 896), QNULL( 1024), QNULL( 1280), QNULL( 1536), QNULL( 1792), QNULL( 2048), /* 40 */ \ - QNULL( 2560), QNULL( 3072), QNULL( 3584), QNULL( 4096), QNULL( 5120), QNULL( 6144), QNULL( 7168), QNULL( 8192), /* 48 */ \ - QNULL( 10240), QNULL( 12288), QNULL( 14336), QNULL( 16384), QNULL( 20480), QNULL( 24576), QNULL( 28672), QNULL( 32768), /* 56 */ \ - QNULL( 40960), QNULL( 49152), QNULL( 57344), QNULL( 65536), QNULL( 81920), QNULL( 98304), QNULL(114688), QNULL(131072), /* 64 */ \ - QNULL(163840), QNULL(196608), QNULL(229376), QNULL(262144), QNULL(327680), QNULL(393216), QNULL(458752), QNULL(524288), /* 72 */ \ - QNULL(MI_LARGE_OBJ_WSIZE_MAX + 1 /* 655360, Huge queue */), \ - QNULL(MI_LARGE_OBJ_WSIZE_MAX + 2) /* Full queue */ } +#define QNULL(sz) \ + { \ + NULL, NULL, (sz) * sizeof(uintptr_t) \ + } +#define MI_PAGE_QUEUES_EMPTY \ + { \ + QNULL(1), \ + QNULL(1), QNULL(2), QNULL(3), QNULL(4), QNULL(5), QNULL(6), QNULL(7), QNULL(8), /* 8 */ \ + QNULL(10), QNULL(12), QNULL(14), QNULL(16), QNULL(20), QNULL(24), QNULL(28), QNULL(32), /* 16 */ \ + QNULL(40), QNULL(48), QNULL(56), QNULL(64), QNULL(80), QNULL(96), QNULL(112), QNULL(128), /* 24 */ \ + QNULL(160), QNULL(192), QNULL(224), QNULL(256), QNULL(320), QNULL(384), QNULL(448), QNULL(512), /* 32 */ \ + QNULL(640), QNULL(768), QNULL(896), QNULL(1024), QNULL(1280), QNULL(1536), QNULL(1792), QNULL(2048), /* 40 */ \ + QNULL(2560), QNULL(3072), QNULL(3584), QNULL(4096), QNULL(5120), QNULL(6144), QNULL(7168), QNULL(8192), /* 48 */ \ + QNULL(10240), QNULL(12288), QNULL(14336), QNULL(16384), QNULL(20480), QNULL(24576), QNULL(28672), QNULL(32768), /* 56 */ \ + QNULL(40960), QNULL(49152), QNULL(57344), QNULL(65536), QNULL(81920), QNULL(98304), QNULL(114688), QNULL(131072), /* 64 */ \ + QNULL(163840), QNULL(196608), QNULL(229376), QNULL(262144), QNULL(327680), QNULL(393216), QNULL(458752), QNULL(524288), /* 72 */ \ + QNULL(MI_LARGE_OBJ_WSIZE_MAX + 1 /* 655360, Huge queue */), \ + QNULL(MI_LARGE_OBJ_WSIZE_MAX + 2) /* Full queue */ \ + } -#define MI_STAT_COUNT_NULL() {0,0,0,0} +#define MI_STAT_COUNT_NULL() \ + { \ + 0, 0, 0, 0 \ + } // Empty statistics -#if MI_STAT>1 -#define MI_STAT_COUNT_END_NULL() , { MI_STAT_COUNT_NULL(), MI_INIT32(MI_STAT_COUNT_NULL) } +#if MI_STAT > 1 +#define MI_STAT_COUNT_END_NULL() \ + , { MI_STAT_COUNT_NULL(), MI_INIT32(MI_STAT_COUNT_NULL) } #else #define MI_STAT_COUNT_END_NULL() #endif -#define MI_STATS_NULL \ - MI_STAT_COUNT_NULL(), MI_STAT_COUNT_NULL(), \ - MI_STAT_COUNT_NULL(), MI_STAT_COUNT_NULL(), \ - MI_STAT_COUNT_NULL(), MI_STAT_COUNT_NULL(), \ - MI_STAT_COUNT_NULL(), MI_STAT_COUNT_NULL(), \ - MI_STAT_COUNT_NULL(), MI_STAT_COUNT_NULL(), \ - MI_STAT_COUNT_NULL(), MI_STAT_COUNT_NULL(), \ - MI_STAT_COUNT_NULL(), MI_STAT_COUNT_NULL(), \ - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, \ - { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } \ - MI_STAT_COUNT_END_NULL() +#define MI_STATS_NULL \ + MI_STAT_COUNT_NULL(), MI_STAT_COUNT_NULL(), \ + MI_STAT_COUNT_NULL(), MI_STAT_COUNT_NULL(), \ + MI_STAT_COUNT_NULL(), MI_STAT_COUNT_NULL(), \ + MI_STAT_COUNT_NULL(), MI_STAT_COUNT_NULL(), \ + MI_STAT_COUNT_NULL(), MI_STAT_COUNT_NULL(), \ + MI_STAT_COUNT_NULL(), MI_STAT_COUNT_NULL(), \ + MI_STAT_COUNT_NULL(), MI_STAT_COUNT_NULL(), \ + {0, 0}, {0, 0}, {0, 0}, {0, 0}, \ + {0, 0}, {0, 0}, {0, 0}, {0, 0} MI_STAT_COUNT_END_NULL() // -------------------------------------------------------- // Statically allocate an empty heap as the initial @@ -88,58 +104,58 @@ const mi_page_t _mi_page_empty = { // -------------------------------------------------------- mi_decl_cache_align const mi_heap_t _mi_heap_empty = { - NULL, - MI_SMALL_PAGES_EMPTY, - MI_PAGE_QUEUES_EMPTY, - ATOMIC_VAR_INIT(NULL), - 0, // tid - 0, // cookie - { 0, 0 }, // keys - { {0}, {0}, 0 }, - 0, // page count - MI_BIN_FULL, 0, // page retired min/max - NULL, // next - false -}; + NULL, + MI_SMALL_PAGES_EMPTY, + MI_PAGE_QUEUES_EMPTY, + ATOMIC_VAR_INIT(NULL), + 0, // tid + 0, // cookie + {0, 0}, // keys + {{0}, {0}, 0}, + 0, // page count + MI_BIN_FULL, + 0, // page retired min/max + NULL, // next + false, + 0, + 0}; // the thread-local default heap for allocation -mi_decl_thread mi_heap_t* _mi_heap_default = (mi_heap_t*)&_mi_heap_empty; +mi_decl_thread mi_heap_t *_mi_heap_default = (mi_heap_t *)&_mi_heap_empty; extern mi_heap_t _mi_heap_main; static mi_tld_t tld_main = { - 0, false, - &_mi_heap_main, &_mi_heap_main, - { { NULL, NULL }, {NULL ,NULL}, {NULL ,NULL, 0}, - 0, 0, 0, 0, 0, 0, NULL, - &tld_main.stats, &tld_main.os - }, // segments - { 0, &tld_main.stats }, // os - { MI_STATS_NULL } // stats + 0, false, &_mi_heap_main, &_mi_heap_main, {{NULL, NULL}, {NULL, NULL}, {NULL, NULL, 0}, 0, 0, 0, 0, 0, 0, NULL, &tld_main.stats, &tld_main.os}, // segments + {0, &tld_main.stats}, // os + {MI_STATS_NULL} // stats }; mi_heap_t _mi_heap_main = { - &tld_main, - MI_SMALL_PAGES_EMPTY, - MI_PAGE_QUEUES_EMPTY, - ATOMIC_VAR_INIT(NULL), - 0, // thread id - 0, // initial cookie - { 0, 0 }, // the key of the main heap can be fixed (unlike page keys that need to be secure!) - { {0x846ca68b}, {0}, 0 }, // random - 0, // page count - MI_BIN_FULL, 0, // page retired min/max - NULL, // next heap - false // can reclaim -}; + &tld_main, + MI_SMALL_PAGES_EMPTY, + MI_PAGE_QUEUES_EMPTY, + ATOMIC_VAR_INIT(NULL), + 0, // thread id + 0, // initial cookie + {0, 0}, // the key of the main heap can be fixed (unlike page keys that need to be secure!) + {{0x846ca68b}, {0}, 0}, // random + 0, // page count + MI_BIN_FULL, + 0, // page retired min/max + NULL, // next heap + false, // can reclaim + 0, + 0}; -bool _mi_process_is_initialized = false; // set to `true` in `mi_process_init`. +bool _mi_process_is_initialized = false; // set to `true` in `mi_process_init`. -mi_stats_t _mi_stats_main = { MI_STATS_NULL }; +mi_stats_t _mi_stats_main = {MI_STATS_NULL}; - -static void mi_heap_main_init(void) { - if (_mi_heap_main.cookie == 0) { +static void mi_heap_main_init(void) +{ + if (_mi_heap_main.cookie == 0) + { _mi_heap_main.thread_id = _mi_thread_id(); _mi_heap_main.cookie = _os_random_weak((uintptr_t)&mi_heap_main_init); _mi_random_init(&_mi_heap_main.random); @@ -148,51 +164,58 @@ static void mi_heap_main_init(void) { } } -mi_heap_t* _mi_heap_main_get(void) { +mi_heap_t *_mi_heap_main_get(void) +{ mi_heap_main_init(); return &_mi_heap_main; } - /* ----------------------------------------------------------- Initialization and freeing of the thread local heaps ----------------------------------------------------------- */ // note: in x64 in release build `sizeof(mi_thread_data_t)` is under 4KiB (= OS page size). -typedef struct mi_thread_data_s { - mi_heap_t heap; // must come first due to cast in `_mi_heap_done` - mi_tld_t tld; +typedef struct mi_thread_data_s +{ + mi_heap_t heap; // must come first due to cast in `_mi_heap_done` + mi_tld_t tld; } mi_thread_data_t; // Initialize the thread local default heap, called from `mi_thread_init` -static bool _mi_heap_init(void) { - if (mi_heap_is_initialized(mi_get_default_heap())) return true; - if (_mi_is_main_thread()) { +static bool _mi_heap_init(void) +{ + if (mi_heap_is_initialized(mi_get_default_heap())) + return true; + if (_mi_is_main_thread()) + { // mi_assert_internal(_mi_heap_main.thread_id != 0); // can happen on freeBSD where alloc is called before any initialization // the main heap is statically allocated mi_heap_main_init(); _mi_heap_set_default_direct(&_mi_heap_main); //mi_assert_internal(_mi_heap_default->tld->heap_backing == mi_get_default_heap()); } - else { + else + { // use `_mi_os_alloc` to allocate directly from the OS - mi_thread_data_t* td = (mi_thread_data_t*)_mi_os_alloc(sizeof(mi_thread_data_t), &_mi_stats_main); // Todo: more efficient allocation? - if (td == NULL) { + mi_thread_data_t *td = (mi_thread_data_t *)_mi_os_alloc(sizeof(mi_thread_data_t), &_mi_stats_main); // Todo: more efficient allocation? + if (td == NULL) + { // if this fails, try once more. (issue #257) - td = (mi_thread_data_t*)_mi_os_alloc(sizeof(mi_thread_data_t), &_mi_stats_main); - if (td == NULL) { + td = (mi_thread_data_t *)_mi_os_alloc(sizeof(mi_thread_data_t), &_mi_stats_main); + if (td == NULL) + { // really out of memory _mi_error_message(ENOMEM, "unable to allocate thread local heap metadata (%zu bytes)\n", sizeof(mi_thread_data_t)); return false; } } // OS allocated so already zero initialized - mi_tld_t* tld = &td->tld; - mi_heap_t* heap = &td->heap; + mi_tld_t *tld = &td->tld; + mi_heap_t *heap = &td->heap; _mi_memcpy_aligned(heap, &_mi_heap_empty, sizeof(*heap)); heap->thread_id = _mi_thread_id(); _mi_random_init(&heap->random); - heap->cookie = _mi_heap_random_next(heap) | 1; + heap->cookie = _mi_heap_random_next(heap) | 1; heap->keys[0] = _mi_heap_random_next(heap); heap->keys[1] = _mi_heap_random_next(heap); heap->tld = tld; @@ -201,27 +224,32 @@ static bool _mi_heap_init(void) { tld->segments.stats = &tld->stats; tld->segments.os = &tld->os; tld->os.stats = &tld->stats; - _mi_heap_set_default_direct(heap); + _mi_heap_set_default_direct(heap); } return false; } // Free the thread local default heap (called from `mi_thread_done`) -static bool _mi_heap_done(mi_heap_t* heap) { - if (!mi_heap_is_initialized(heap)) return true; +static bool _mi_heap_done(mi_heap_t *heap) +{ + if (!mi_heap_is_initialized(heap)) + return true; // reset default heap - _mi_heap_set_default_direct(_mi_is_main_thread() ? &_mi_heap_main : (mi_heap_t*)&_mi_heap_empty); + _mi_heap_set_default_direct(_mi_is_main_thread() ? &_mi_heap_main : (mi_heap_t *)&_mi_heap_empty); // switch to backing heap heap = heap->tld->heap_backing; - if (!mi_heap_is_initialized(heap)) return false; + if (!mi_heap_is_initialized(heap)) + return false; // delete all non-backing heaps in this thread - mi_heap_t* curr = heap->tld->heaps; - while (curr != NULL) { - mi_heap_t* next = curr->next; // save `next` as `curr` will be freed - if (curr != heap) { + mi_heap_t *curr = heap->tld->heaps; + while (curr != NULL) + { + mi_heap_t *next = curr->next; // save `next` as `curr` will be freed + if (curr != heap) + { mi_assert_internal(!mi_heap_is_backing(curr)); mi_heap_delete(curr); } @@ -231,15 +259,17 @@ static bool _mi_heap_done(mi_heap_t* heap) { mi_assert_internal(mi_heap_is_backing(heap)); // collect if not the main thread - if (heap != &_mi_heap_main) { + if (heap != &_mi_heap_main) + { _mi_heap_collect_abandon(heap); } - + // merge stats - _mi_stats_done(&heap->tld->stats); + _mi_stats_done(&heap->tld->stats); // free if not the main thread - if (heap != &_mi_heap_main) { + if (heap != &_mi_heap_main) + { mi_assert_internal(heap->tld->segments.count == 0 || heap->thread_id != _mi_thread_id()); _mi_os_free(heap, sizeof(mi_thread_data_t), &_mi_stats_main); } @@ -254,8 +284,6 @@ static bool _mi_heap_done(mi_heap_t* heap) { return false; } - - // -------------------------------------------------------- // Try to run `mi_thread_done()` automatically so any memory // owned by the thread but not yet released can be abandoned @@ -272,7 +300,7 @@ static bool _mi_heap_done(mi_heap_t* heap) { // to set up the thread local keys. // -------------------------------------------------------- -static void _mi_thread_done(mi_heap_t* default_heap); +static void _mi_thread_done(mi_heap_t *default_heap); #ifdef __wasi__ // no pthreads in the WebAssembly Standard Interface @@ -281,54 +309,60 @@ static void _mi_thread_done(mi_heap_t* default_heap); #endif #if defined(_WIN32) && defined(MI_SHARED_LIB) - // nothing to do as it is done in DllMain +// nothing to do as it is done in DllMain #elif defined(_WIN32) && !defined(MI_SHARED_LIB) - // use thread local storage keys to detect thread ending - #include - #include - #if (_WIN32_WINNT < 0x600) // before Windows Vista - WINBASEAPI DWORD WINAPI FlsAlloc( _In_opt_ PFLS_CALLBACK_FUNCTION lpCallback ); - WINBASEAPI PVOID WINAPI FlsGetValue( _In_ DWORD dwFlsIndex ); - WINBASEAPI BOOL WINAPI FlsSetValue( _In_ DWORD dwFlsIndex, _In_opt_ PVOID lpFlsData ); - WINBASEAPI BOOL WINAPI FlsFree(_In_ DWORD dwFlsIndex); - #endif - static DWORD mi_fls_key = (DWORD)(-1); - static void NTAPI mi_fls_done(PVOID value) { - if (value!=NULL) _mi_thread_done((mi_heap_t*)value); - } +// use thread local storage keys to detect thread ending +#include +#include +#if (_WIN32_WINNT < 0x600) // before Windows Vista +WINBASEAPI DWORD WINAPI FlsAlloc(_In_opt_ PFLS_CALLBACK_FUNCTION lpCallback); +WINBASEAPI PVOID WINAPI FlsGetValue(_In_ DWORD dwFlsIndex); +WINBASEAPI BOOL WINAPI FlsSetValue(_In_ DWORD dwFlsIndex, _In_opt_ PVOID lpFlsData); +WINBASEAPI BOOL WINAPI FlsFree(_In_ DWORD dwFlsIndex); +#endif +static DWORD mi_fls_key = (DWORD)(-1); +static void NTAPI mi_fls_done(PVOID value) +{ + if (value != NULL) + _mi_thread_done((mi_heap_t *)value); +} #elif defined(MI_USE_PTHREADS) - // use pthread local storage keys to detect thread ending - // (and used with MI_TLS_PTHREADS for the default heap) - #include - pthread_key_t _mi_heap_default_key = (pthread_key_t)(-1); - static void mi_pthread_done(void* value) { - if (value!=NULL) _mi_thread_done((mi_heap_t*)value); - } +// use pthread local storage keys to detect thread ending +// (and used with MI_TLS_PTHREADS for the default heap) +#include +pthread_key_t _mi_heap_default_key = (pthread_key_t)(-1); +static void mi_pthread_done(void *value) +{ + if (value != NULL) + _mi_thread_done((mi_heap_t *)value); +} #elif defined(__wasi__) // no pthreads in the WebAssembly Standard Interface #else - #pragma message("define a way to call mi_thread_done when a thread is done") +#pragma message("define a way to call mi_thread_done when a thread is done") #endif // Set up handlers so `mi_thread_done` is called automatically -static void mi_process_setup_auto_thread_done(void) { +static void mi_process_setup_auto_thread_done(void) +{ static bool tls_initialized = false; // fine if it races - if (tls_initialized) return; + if (tls_initialized) + return; tls_initialized = true; - #if defined(_WIN32) && defined(MI_SHARED_LIB) - // nothing to do as it is done in DllMain - #elif defined(_WIN32) && !defined(MI_SHARED_LIB) - mi_fls_key = FlsAlloc(&mi_fls_done); - #elif defined(MI_USE_PTHREADS) - mi_assert_internal(_mi_heap_default_key == (pthread_key_t)(-1)); - pthread_key_create(&_mi_heap_default_key, &mi_pthread_done); - #endif +#if defined(_WIN32) && defined(MI_SHARED_LIB) + // nothing to do as it is done in DllMain +#elif defined(_WIN32) && !defined(MI_SHARED_LIB) + mi_fls_key = FlsAlloc(&mi_fls_done); +#elif defined(MI_USE_PTHREADS) + mi_assert_internal(_mi_heap_default_key == (pthread_key_t)(-1)); + pthread_key_create(&_mi_heap_default_key, &mi_pthread_done); +#endif _mi_heap_set_default_direct(&_mi_heap_main); } - -bool _mi_is_main_thread(void) { - return (_mi_heap_main.thread_id==0 || _mi_heap_main.thread_id == _mi_thread_id()); +bool _mi_is_main_thread(void) +{ + return (_mi_heap_main.thread_id == 0 || _mi_heap_main.thread_id == _mi_thread_id()); } // This is called from the `mi_malloc_generic` @@ -336,125 +370,144 @@ void mi_thread_init(void) mi_attr_noexcept { // ensure our process has started already mi_process_init(); - + // initialize the thread local default heap // (this will call `_mi_heap_set_default_direct` and thus set the // fiber/pthread key to a non-zero value, ensuring `_mi_thread_done` is called) - if (_mi_heap_init()) return; // returns true if already initialized + if (_mi_heap_init()) + return; // returns true if already initialized _mi_stat_increase(&_mi_stats_main.threads, 1); //_mi_verbose_message("thread init: 0x%zx\n", _mi_thread_id()); } -void mi_thread_done(void) mi_attr_noexcept { +void mi_thread_done(void) mi_attr_noexcept +{ _mi_thread_done(mi_get_default_heap()); } -static void _mi_thread_done(mi_heap_t* heap) { +static void _mi_thread_done(mi_heap_t *heap) +{ _mi_stat_decrease(&_mi_stats_main.threads, 1); // check thread-id as on Windows shutdown with FLS the main (exit) thread may call this on thread-local heaps... - if (heap->thread_id != _mi_thread_id()) return; - + if (heap->thread_id != _mi_thread_id()) + return; + // abandon the thread local heap - if (_mi_heap_done(heap)) return; // returns true if already ran + if (_mi_heap_done(heap)) + return; // returns true if already ran } -void _mi_heap_set_default_direct(mi_heap_t* heap) { +void _mi_heap_set_default_direct(mi_heap_t *heap) +{ mi_assert_internal(heap != NULL); - #if defined(MI_TLS_SLOT) - mi_tls_slot_set(MI_TLS_SLOT,heap); - #elif defined(MI_TLS_PTHREAD_SLOT_OFS) +#if defined(MI_TLS_SLOT) + mi_tls_slot_set(MI_TLS_SLOT, heap); +#elif defined(MI_TLS_PTHREAD_SLOT_OFS) *mi_tls_pthread_heap_slot() = heap; - #elif defined(MI_TLS_PTHREAD) - // we use _mi_heap_default_key - #else +#elif defined(MI_TLS_PTHREAD) +// we use _mi_heap_default_key +#else _mi_heap_default = heap; - #endif +#endif - // ensure the default heap is passed to `_mi_thread_done` - // setting to a non-NULL value also ensures `mi_thread_done` is called. - #if defined(_WIN32) && defined(MI_SHARED_LIB) - // nothing to do as it is done in DllMain - #elif defined(_WIN32) && !defined(MI_SHARED_LIB) - mi_assert_internal(mi_fls_key != 0); - FlsSetValue(mi_fls_key, heap); - #elif defined(MI_USE_PTHREADS) - if (_mi_heap_default_key != (pthread_key_t)(-1)) { // can happen during recursive invocation on freeBSD +// ensure the default heap is passed to `_mi_thread_done` +// setting to a non-NULL value also ensures `mi_thread_done` is called. +#if defined(_WIN32) && defined(MI_SHARED_LIB) + // nothing to do as it is done in DllMain +#elif defined(_WIN32) && !defined(MI_SHARED_LIB) + mi_assert_internal(mi_fls_key != 0); + FlsSetValue(mi_fls_key, heap); +#elif defined(MI_USE_PTHREADS) + if (_mi_heap_default_key != (pthread_key_t)(-1)) + { // can happen during recursive invocation on freeBSD pthread_setspecific(_mi_heap_default_key, heap); } - #endif +#endif } - // -------------------------------------------------------- // Run functions on process init/done, and thread init/done // -------------------------------------------------------- static void mi_process_done(void); -static bool os_preloading = true; // true until this module is initialized -static bool mi_redirected = false; // true if malloc redirects to mi_malloc +static bool os_preloading = true; // true until this module is initialized +static bool mi_redirected = false; // true if malloc redirects to mi_malloc // Returns true if this module has not been initialized; Don't use C runtime routines until it returns false. -bool _mi_preloading(void) { +bool _mi_preloading(void) +{ return os_preloading; } -bool mi_is_redirected(void) mi_attr_noexcept { +bool mi_is_redirected(void) mi_attr_noexcept +{ return mi_redirected; } // Communicate with the redirection module on Windows #if defined(_WIN32) && defined(MI_SHARED_LIB) #ifdef __cplusplus -extern "C" { +extern "C" +{ #endif -mi_decl_export void _mi_redirect_entry(DWORD reason) { - // called on redirection; careful as this may be called before DllMain - if (reason == DLL_PROCESS_ATTACH) { - mi_redirected = true; + mi_decl_export void _mi_redirect_entry(DWORD reason) + { + // called on redirection; careful as this may be called before DllMain + if (reason == DLL_PROCESS_ATTACH) + { + mi_redirected = true; + } + else if (reason == DLL_PROCESS_DETACH) + { + mi_redirected = false; + } + else if (reason == DLL_THREAD_DETACH) + { + mi_thread_done(); + } } - else if (reason == DLL_PROCESS_DETACH) { - mi_redirected = false; - } - else if (reason == DLL_THREAD_DETACH) { - mi_thread_done(); - } -} -__declspec(dllimport) bool mi_allocator_init(const char** message); -__declspec(dllimport) void mi_allocator_done(void); + __declspec(dllimport) bool mi_allocator_init(const char **message); + __declspec(dllimport) void mi_allocator_done(void); #ifdef __cplusplus } #endif #else -static bool mi_allocator_init(const char** message) { - if (message != NULL) *message = NULL; +static bool mi_allocator_init(const char **message) +{ + if (message != NULL) + *message = NULL; return true; } -static void mi_allocator_done(void) { +static void mi_allocator_done(void) +{ // nothing to do } #endif // Called once by the process loader -static void mi_process_load(void) { +static void mi_process_load(void) +{ mi_heap_main_init(); - #if defined(MI_TLS_RECURSE_GUARD) - volatile mi_heap_t* dummy = _mi_heap_default; // access TLS to allocate it before setting tls_initialized to true; +#if defined(MI_TLS_RECURSE_GUARD) + volatile mi_heap_t *dummy = _mi_heap_default; // access TLS to allocate it before setting tls_initialized to true; UNUSED(dummy); - #endif +#endif os_preloading = false; atexit(&mi_process_done); _mi_options_init(); mi_process_init(); //mi_stats_reset();- - if (mi_redirected) _mi_verbose_message("malloc is redirected.\n"); + if (mi_redirected) + _mi_verbose_message("malloc is redirected.\n"); // show message from the redirector (if present) - const char* msg = NULL; + const char *msg = NULL; mi_allocator_init(&msg); - if (msg != NULL && (mi_option_is_enabled(mi_option_verbose) || mi_option_is_enabled(mi_option_show_errors))) { - _mi_fputs(NULL,NULL,NULL,msg); + if (msg != NULL && (mi_option_is_enabled(mi_option_verbose) || mi_option_is_enabled(mi_option_show_errors))) + { + _mi_fputs(NULL, NULL, NULL, msg); } } @@ -462,22 +515,26 @@ static void mi_process_load(void) { #include mi_decl_cache_align bool _mi_cpu_has_fsrm = false; -static void mi_detect_cpu_features(void) { +static void mi_detect_cpu_features(void) +{ // FSRM for fast rep movsb support (AMD Zen3+ (~2020) or Intel Ice Lake+ (~2017)) int32_t cpu_info[4]; __cpuid(cpu_info, 7); _mi_cpu_has_fsrm = ((cpu_info[3] & (1 << 4)) != 0); // bit 4 of EDX : see } #else -static void mi_detect_cpu_features(void) { +static void mi_detect_cpu_features(void) +{ // nothing } #endif // Initialize the process; called by thread_init or the process loader -void mi_process_init(void) mi_attr_noexcept { +void mi_process_init(void) mi_attr_noexcept +{ // ensure we are called once - if (_mi_process_is_initialized) return; + if (_mi_process_is_initialized) + return; _mi_process_is_initialized = true; mi_process_setup_auto_thread_done(); @@ -485,99 +542,113 @@ void mi_process_init(void) mi_attr_noexcept { mi_detect_cpu_features(); _mi_os_init(); mi_heap_main_init(); - #if (MI_DEBUG) +#if (MI_DEBUG) _mi_verbose_message("debug level : %d\n", MI_DEBUG); - #endif +#endif _mi_verbose_message("secure level: %d\n", MI_SECURE); mi_thread_init(); - mi_stats_reset(); // only call stat reset *after* thread init (or the heap tld == NULL) + mi_stats_reset(); // only call stat reset *after* thread init (or the heap tld == NULL) - if (mi_option_is_enabled(mi_option_reserve_huge_os_pages)) { + if (mi_option_is_enabled(mi_option_reserve_huge_os_pages)) + { size_t pages = mi_option_get(mi_option_reserve_huge_os_pages); - mi_reserve_huge_os_pages_interleave(pages, 0, pages*500); - } - if (mi_option_is_enabled(mi_option_reserve_os_memory)) { + mi_reserve_huge_os_pages_interleave(pages, 0, pages * 500); + } + if (mi_option_is_enabled(mi_option_reserve_os_memory)) + { long ksize = mi_option_get(mi_option_reserve_os_memory); - if (ksize > 0) mi_reserve_os_memory((size_t)ksize*KiB, true, true); + if (ksize > 0) + mi_reserve_os_memory((size_t)ksize * KiB, true, true); } } // Called when the process is done (through `at_exit`) -static void mi_process_done(void) { +static void mi_process_done(void) +{ // only shutdown if we were initialized - if (!_mi_process_is_initialized) return; + if (!_mi_process_is_initialized) + return; // ensure we are called once static bool process_done = false; - if (process_done) return; + if (process_done) + return; process_done = true; - #if defined(_WIN32) && !defined(MI_SHARED_LIB) - FlsSetValue(mi_fls_key, NULL); // don't call main-thread callback - FlsFree(mi_fls_key); // call thread-done on all threads to prevent dangling callback pointer if statically linked with a DLL; Issue #208 - #endif - - #if (MI_DEBUG != 0) || !defined(MI_SHARED_LIB) +#if defined(_WIN32) && !defined(MI_SHARED_LIB) + FlsSetValue(mi_fls_key, NULL); // don't call main-thread callback + FlsFree(mi_fls_key); // call thread-done on all threads to prevent dangling callback pointer if statically linked with a DLL; Issue #208 +#endif + +#if (MI_DEBUG != 0) || !defined(MI_SHARED_LIB) // free all memory if possible on process exit. This is not needed for a stand-alone process // but should be done if mimalloc is statically linked into another shared library which // is repeatedly loaded/unloaded, see issue #281. - mi_collect(true /* force */ ); - #endif + mi_collect(true /* force */); +#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)) + { mi_stats_print(NULL); } - mi_allocator_done(); + mi_allocator_done(); _mi_verbose_message("process done: 0x%zx\n", _mi_heap_main.thread_id); os_preloading = true; // don't call the C runtime anymore } - - #if defined(_WIN32) && defined(MI_SHARED_LIB) - // Windows DLL: easy to hook into process_init and thread_done - __declspec(dllexport) BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, LPVOID reserved) { - UNUSED(reserved); - UNUSED(inst); - if (reason==DLL_PROCESS_ATTACH) { - mi_process_load(); - } - else if (reason==DLL_THREAD_DETACH) { - if (!mi_is_redirected()) mi_thread_done(); - } - return TRUE; +// Windows DLL: easy to hook into process_init and thread_done +__declspec(dllexport) BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, LPVOID reserved) +{ + UNUSED(reserved); + UNUSED(inst); + if (reason == DLL_PROCESS_ATTACH) + { + mi_process_load(); } + else if (reason == DLL_THREAD_DETACH) + { + if (!mi_is_redirected()) + mi_thread_done(); + } + return TRUE; +} #elif defined(__cplusplus) - // C++: use static initialization to detect process start - static bool _mi_process_init(void) { - mi_process_load(); - return (_mi_heap_main.thread_id != 0); - } - static bool mi_initialized = _mi_process_init(); +// C++: use static initialization to detect process start +static bool _mi_process_init(void) +{ + mi_process_load(); + return (_mi_heap_main.thread_id != 0); +} +static bool mi_initialized = _mi_process_init(); #elif defined(__GNUC__) || defined(__clang__) - // GCC,Clang: use the constructor attribute - static void __attribute__((constructor)) _mi_process_init(void) { - mi_process_load(); - } +// GCC,Clang: use the constructor attribute +static void __attribute__((constructor)) _mi_process_init(void) +{ + mi_process_load(); +} #elif defined(_MSC_VER) - // MSVC: use data section magic for static libraries - // See - static int _mi_process_init(void) { - mi_process_load(); - return 0; - } - typedef int(*_crt_cb)(void); - #ifdef _M_X64 - __pragma(comment(linker, "/include:" "_mi_msvc_initu")) - #pragma section(".CRT$XIU", long, read) - #else - __pragma(comment(linker, "/include:" "__mi_msvc_initu")) - #endif - #pragma data_seg(".CRT$XIU") - _crt_cb _mi_msvc_initu[] = { &_mi_process_init }; - #pragma data_seg() +// MSVC: use data section magic for static libraries +// See +static int _mi_process_init(void) +{ + mi_process_load(); + return 0; +} +typedef int (*_crt_cb)(void); +#ifdef _M_X64 +__pragma(comment(linker, "/include:" + "_mi_msvc_initu")) +#pragma section(".CRT$XIU", long, read) +#else +__pragma(comment(linker, "/include:" + "__mi_msvc_initu")) +#endif +#pragma data_seg(".CRT$XIU") + _crt_cb _mi_msvc_initu[] = {&_mi_process_init}; +#pragma data_seg() #else #pragma message("define a way to call mi_process_load on your platform") diff --git a/src/page.c b/src/page.c index 4b7e9ffb..a86b0bb2 100644 --- a/src/page.c +++ b/src/page.c @@ -23,26 +23,28 @@ terms of the MIT license. A copy of the license can be found in the file #include "page-queue.c" #undef MI_IN_PAGE_C - /* ----------------------------------------------------------- Page helpers ----------------------------------------------------------- */ // Index a block in a page -static inline mi_block_t* mi_page_block_at(const mi_page_t* page, void* page_start, size_t block_size, size_t i) { +static inline mi_block_t *mi_page_block_at(const mi_page_t *page, void *page_start, size_t block_size, size_t i) +{ UNUSED(page); mi_assert_internal(page != NULL); mi_assert_internal(i <= page->reserved); - return (mi_block_t*)((uint8_t*)page_start + (i * block_size)); + return (mi_block_t *)((uint8_t *)page_start + (i * block_size)); } -static void mi_page_init(mi_heap_t* heap, mi_page_t* page, size_t size, mi_tld_t* tld); -static void mi_page_extend_free(mi_heap_t* heap, mi_page_t* page, mi_tld_t* tld); +static void mi_page_init(mi_heap_t *heap, mi_page_t *page, size_t size, mi_tld_t *tld); +static void mi_page_extend_free(mi_heap_t *heap, mi_page_t *page, mi_tld_t *tld); -#if (MI_DEBUG>=3) -static size_t mi_page_list_count(mi_page_t* page, mi_block_t* head) { +#if (MI_DEBUG >= 3) +static size_t mi_page_list_count(mi_page_t *page, mi_block_t *head) +{ size_t count = 0; - while (head != NULL) { + while (head != NULL) + { mi_assert_internal(page == _mi_ptr_page(head)); count++; head = mi_block_next(page, head); @@ -57,41 +59,47 @@ static inline uint8_t* mi_page_area(const mi_page_t* page) { } */ -static bool mi_page_list_is_valid(mi_page_t* page, mi_block_t* p) { +static bool mi_page_list_is_valid(mi_page_t *page, mi_block_t *p) +{ size_t psize; - uint8_t* page_area = _mi_page_start(_mi_page_segment(page), page, &psize); - mi_block_t* start = (mi_block_t*)page_area; - mi_block_t* end = (mi_block_t*)(page_area + psize); - while(p != NULL) { - if (p < start || p >= end) return false; + uint8_t *page_area = _mi_page_start(_mi_page_segment(page), page, &psize); + mi_block_t *start = (mi_block_t *)page_area; + mi_block_t *end = (mi_block_t *)(page_area + psize); + while (p != NULL) + { + if (p < start || p >= end) + return false; p = mi_block_next(page, p); } return true; } -static bool mi_page_is_valid_init(mi_page_t* page) { +static bool mi_page_is_valid_init(mi_page_t *page) +{ mi_assert_internal(page->xblock_size > 0); mi_assert_internal(page->used <= page->capacity); mi_assert_internal(page->capacity <= page->reserved); const size_t bsize = mi_page_block_size(page); - mi_segment_t* segment = _mi_page_segment(page); - uint8_t* start = _mi_page_start(segment,page,NULL); - mi_assert_internal(start == _mi_segment_page_start(segment,page,bsize,NULL,NULL)); + mi_segment_t *segment = _mi_page_segment(page); + uint8_t *start = _mi_page_start(segment, page, NULL); + mi_assert_internal(start == _mi_segment_page_start(segment, page, bsize, NULL, NULL)); //mi_assert_internal(start + page->capacity*page->block_size == page->top); - mi_assert_internal(mi_page_list_is_valid(page,page->free)); - mi_assert_internal(mi_page_list_is_valid(page,page->local_free)); + mi_assert_internal(mi_page_list_is_valid(page, page->free)); + mi_assert_internal(mi_page_list_is_valid(page, page->local_free)); - #if MI_DEBUG>3 // generally too expensive to check this - if (page->flags.is_zero) { - for(mi_block_t* block = page->free; block != NULL; mi_block_next(page,block)) { +#if MI_DEBUG > 3 // generally too expensive to check this + if (page->flags.is_zero) + { + for (mi_block_t *block = page->free; block != NULL; mi_block_next(page, block)) + { mi_assert_expensive(mi_mem_is_zero(block + 1, page->block_size - sizeof(mi_block_t))); } } - #endif +#endif - mi_block_t* tfree = mi_page_thread_free(page); + mi_block_t *tfree = mi_page_thread_free(page); mi_assert_internal(mi_page_list_is_valid(page, tfree)); //size_t tfree_count = mi_page_list_count(page, tfree); //mi_assert_internal(tfree_count <= page->thread_freed + 1); @@ -102,41 +110,49 @@ static bool mi_page_is_valid_init(mi_page_t* page) { return true; } -bool _mi_page_is_valid(mi_page_t* page) { +bool _mi_page_is_valid(mi_page_t *page) +{ mi_assert_internal(mi_page_is_valid_init(page)); - #if MI_SECURE +#if MI_SECURE mi_assert_internal(page->keys[0] != 0); - #endif - if (mi_page_heap(page)!=NULL) { - mi_segment_t* segment = _mi_page_segment(page); - mi_assert_internal(!_mi_process_is_initialized || segment->thread_id == mi_page_heap(page)->thread_id || segment->thread_id==0); - if (segment->page_kind != MI_PAGE_HUGE) { - mi_page_queue_t* pq = mi_page_queue_of(page); +#endif + if (mi_page_heap(page) != NULL) + { + mi_segment_t *segment = _mi_page_segment(page); + mi_assert_internal(!_mi_process_is_initialized || segment->thread_id == mi_page_heap(page)->thread_id || segment->thread_id == 0); + if (segment->page_kind != MI_PAGE_HUGE) + { + mi_page_queue_t *pq = mi_page_queue_of(page); mi_assert_internal(mi_page_queue_contains(pq, page)); - mi_assert_internal(pq->block_size==mi_page_block_size(page) || mi_page_block_size(page) > MI_LARGE_OBJ_SIZE_MAX || mi_page_is_in_full(page)); - mi_assert_internal(mi_heap_contains_queue(mi_page_heap(page),pq)); + mi_assert_internal(pq->block_size == mi_page_block_size(page) || mi_page_block_size(page) > MI_LARGE_OBJ_SIZE_MAX || mi_page_is_in_full(page)); + mi_assert_internal(mi_heap_contains_queue(mi_page_heap(page), pq)); } } return true; } #endif -void _mi_page_use_delayed_free(mi_page_t* page, mi_delayed_t delay, bool override_never) { +void _mi_page_use_delayed_free(mi_page_t *page, mi_delayed_t delay, bool override_never) +{ mi_thread_free_t tfreex; - mi_delayed_t old_delay; - mi_thread_free_t tfree; - do { + mi_delayed_t old_delay; + mi_thread_free_t tfree; + do + { tfree = mi_atomic_load_acquire(&page->xthread_free); // note: must acquire as we can break/repeat this loop and not do a CAS; tfreex = mi_tf_set_delayed(tfree, delay); old_delay = mi_tf_delayed(tfree); - if (mi_unlikely(old_delay == MI_DELAYED_FREEING)) { + if (mi_unlikely(old_delay == MI_DELAYED_FREEING)) + { mi_atomic_yield(); // delay until outstanding MI_DELAYED_FREEING are done. // tfree = mi_tf_set_delayed(tfree, MI_NO_DELAYED_FREE); // will cause CAS to busy fail } - else if (delay == old_delay) { + else if (delay == old_delay) + { break; // avoid atomic operation if already equal } - else if (!override_never && old_delay == MI_NEVER_DELAYED_FREE) { + else if (!override_never && old_delay == MI_NEVER_DELAYED_FREE) + { break; // leave never-delayed flag set } } while ((old_delay == MI_DELAYED_FREEING) || @@ -151,63 +167,73 @@ void _mi_page_use_delayed_free(mi_page_t* page, mi_delayed_t delay, bool overrid // Note: The exchange must be done atomically as this is used right after // moving to the full list in `mi_page_collect_ex` and we need to // ensure that there was no race where the page became unfull just before the move. -static void _mi_page_thread_free_collect(mi_page_t* page) +static void _mi_page_thread_free_collect(mi_page_t *page) { - mi_block_t* head; + mi_block_t *head; mi_thread_free_t tfreex; mi_thread_free_t tfree = mi_atomic_load_relaxed(&page->xthread_free); - do { + do + { head = mi_tf_block(tfree); - tfreex = mi_tf_set_block(tfree,NULL); + tfreex = mi_tf_set_block(tfree, NULL); } while (!mi_atomic_cas_weak_acq_rel(&page->xthread_free, &tfree, tfreex)); // return if the list is empty - if (head == NULL) return; + if (head == NULL) + return; // find the tail -- also to get a proper count (without data races) uint32_t max_count = page->capacity; // cannot collect more than capacity uint32_t count = 1; - mi_block_t* tail = head; - mi_block_t* next; - while ((next = mi_block_next(page,tail)) != NULL && count <= max_count) { + mi_block_t *tail = head; + mi_block_t *next; + while ((next = mi_block_next(page, tail)) != NULL && count <= max_count) + { count++; tail = next; } // if `count > max_count` there was a memory corruption (possibly infinite list due to double multi-threaded free) - if (count > max_count) { + if (count > max_count) + { _mi_error_message(EFAULT, "corrupted thread-free list\n"); return; // the thread-free items cannot be freed } // and append the current local free list - mi_block_set_next(page,tail, page->local_free); + mi_block_set_next(page, tail, page->local_free); page->local_free = head; // update counts now page->used -= count; } -void _mi_page_free_collect(mi_page_t* page, bool force) { - mi_assert_internal(page!=NULL); +void _mi_page_free_collect(mi_page_t *page, bool force) +{ + mi_assert_internal(page != NULL); // collect the thread free list - if (force || mi_page_thread_free(page) != NULL) { // quick test to avoid an atomic operation + if (force || mi_page_thread_free(page) != NULL) + { // quick test to avoid an atomic operation _mi_page_thread_free_collect(page); } // and the local free list - if (page->local_free != NULL) { - if (mi_likely(page->free == NULL)) { + if (page->local_free != NULL) + { + if (mi_likely(page->free == NULL)) + { // usual case page->free = page->local_free; page->local_free = NULL; page->is_zero = false; } - else if (force) { + else if (force) + { // append -- only on shutdown (force) as this is a linear operation - mi_block_t* tail = page->local_free; - mi_block_t* next; - while ((next = mi_block_next(page, tail)) != NULL) { + mi_block_t *tail = page->local_free; + mi_block_t *next; + while ((next = mi_block_next(page, tail)) != NULL) + { tail = next; } mi_block_set_next(page, tail, page->free); @@ -220,50 +246,54 @@ void _mi_page_free_collect(mi_page_t* page, bool force) { mi_assert_internal(!force || page->local_free == NULL); } - - /* ----------------------------------------------------------- Page fresh and retire ----------------------------------------------------------- */ // called from segments when reclaiming abandoned pages -void _mi_page_reclaim(mi_heap_t* heap, mi_page_t* page) { +void _mi_page_reclaim(mi_heap_t *heap, mi_page_t *page) +{ mi_assert_expensive(mi_page_is_valid_init(page)); mi_assert_internal(mi_page_heap(page) == heap); mi_assert_internal(mi_page_thread_free_flag(page) != MI_NEVER_DELAYED_FREE); mi_assert_internal(_mi_page_segment(page)->page_kind != MI_PAGE_HUGE); mi_assert_internal(!page->is_reset); // TODO: push on full queue immediately if it is full? - mi_page_queue_t* pq = mi_page_queue(heap, mi_page_block_size(page)); + mi_page_queue_t *pq = mi_page_queue(heap, mi_page_block_size(page)); mi_page_queue_push(heap, pq, page); mi_assert_expensive(_mi_page_is_valid(page)); } // allocate a fresh page from a segment -static mi_page_t* mi_page_fresh_alloc(mi_heap_t* heap, mi_page_queue_t* pq, size_t block_size) { - mi_assert_internal(pq==NULL||mi_heap_contains_queue(heap, pq)); - mi_assert_internal(pq==NULL||block_size == pq->block_size); - mi_page_t* page = _mi_segment_page_alloc(heap, block_size, &heap->tld->segments, &heap->tld->os); - if (page == NULL) { +static mi_page_t *mi_page_fresh_alloc(mi_heap_t *heap, mi_page_queue_t *pq, size_t block_size) +{ + mi_assert_internal(pq == NULL || mi_heap_contains_queue(heap, pq)); + mi_assert_internal(pq == NULL || block_size == pq->block_size); + mi_page_t *page = _mi_segment_page_alloc(heap, block_size, &heap->tld->segments, &heap->tld->os); + if (page == NULL) + { // this may be out-of-memory, or an abandoned page was reclaimed (and in our queue) return NULL; } // a fresh page was found, initialize it - mi_assert_internal(pq==NULL || _mi_page_segment(page)->page_kind != MI_PAGE_HUGE); + mi_assert_internal(pq == NULL || _mi_page_segment(page)->page_kind != MI_PAGE_HUGE); mi_page_init(heap, page, block_size, heap->tld); _mi_stat_increase(&heap->tld->stats.pages, 1); - if (pq!=NULL) mi_page_queue_push(heap, pq, page); // huge pages use pq==NULL + if (pq != NULL) + mi_page_queue_push(heap, pq, page); // huge pages use pq==NULL mi_assert_expensive(_mi_page_is_valid(page)); return page; } // Get a fresh page to use -static mi_page_t* mi_page_fresh(mi_heap_t* heap, mi_page_queue_t* pq) { +static mi_page_t *mi_page_fresh(mi_heap_t *heap, mi_page_queue_t *pq) +{ mi_assert_internal(mi_heap_contains_queue(heap, pq)); - mi_page_t* page = mi_page_fresh_alloc(heap, pq, pq->block_size); - if (page==NULL) return NULL; - mi_assert_internal(pq->block_size==mi_page_block_size(page)); - mi_assert_internal(pq==mi_page_queue(heap, mi_page_block_size(page))); + mi_page_t *page = mi_page_fresh_alloc(heap, pq, pq->block_size); + if (page == NULL) + return NULL; + mi_assert_internal(pq->block_size == mi_page_block_size(page)); + mi_assert_internal(pq == mi_page_queue(heap, mi_page_block_size(page))); return page; } @@ -271,22 +301,28 @@ static mi_page_t* mi_page_fresh(mi_heap_t* heap, mi_page_queue_t* pq) { Do any delayed frees (put there by other threads if they deallocated in a full page) ----------------------------------------------------------- */ -void _mi_heap_delayed_free(mi_heap_t* heap) { +void _mi_heap_delayed_free(mi_heap_t *heap) +{ // take over the list (note: no atomic exchange since it is often NULL) - mi_block_t* block = mi_atomic_load_ptr_relaxed(mi_block_t, &heap->thread_delayed_free); - while (block != NULL && !mi_atomic_cas_ptr_weak_acq_rel(mi_block_t, &heap->thread_delayed_free, &block, NULL)) { /* nothing */ }; + mi_block_t *block = mi_atomic_load_ptr_relaxed(mi_block_t, &heap->thread_delayed_free); + while (block != NULL && !mi_atomic_cas_ptr_weak_acq_rel(mi_block_t, &heap->thread_delayed_free, &block, NULL)) + { /* nothing */ + }; // and free them all - while(block != NULL) { - mi_block_t* next = mi_block_nextx(heap,block, heap->keys); + while (block != NULL) + { + mi_block_t *next = mi_block_nextx(heap, block, heap->keys); // use internal free instead of regular one to keep stats etc correct - if (!_mi_free_delayed_block(block)) { + if (!_mi_free_delayed_block(block)) + { // we might already start delayed freeing while another thread has not yet // reset the delayed_freeing flag; in that case delay it further by reinserting. - mi_block_t* dfree = mi_atomic_load_ptr_relaxed(mi_block_t, &heap->thread_delayed_free); - do { + mi_block_t *dfree = mi_atomic_load_ptr_relaxed(mi_block_t, &heap->thread_delayed_free); + do + { mi_block_set_nextx(heap, block, dfree, heap->keys); - } while (!mi_atomic_cas_ptr_weak_release(mi_block_t,&heap->thread_delayed_free, &dfree, block)); + } while (!mi_atomic_cas_ptr_weak_release(mi_block_t, &heap->thread_delayed_free, &dfree, block)); } block = next; } @@ -297,87 +333,92 @@ void _mi_heap_delayed_free(mi_heap_t* heap) { ----------------------------------------------------------- */ // Move a page from the full list back to a regular list -void _mi_page_unfull(mi_page_t* page) { +void _mi_page_unfull(mi_page_t *page) +{ mi_assert_internal(page != NULL); mi_assert_expensive(_mi_page_is_valid(page)); mi_assert_internal(mi_page_is_in_full(page)); - if (!mi_page_is_in_full(page)) return; + if (!mi_page_is_in_full(page)) + return; - mi_heap_t* heap = mi_page_heap(page); - mi_page_queue_t* pqfull = &heap->pages[MI_BIN_FULL]; + mi_heap_t *heap = mi_page_heap(page); + mi_page_queue_t *pqfull = &heap->pages[MI_BIN_FULL]; mi_page_set_in_full(page, false); // to get the right queue - mi_page_queue_t* pq = mi_heap_page_queue_of(heap, page); + mi_page_queue_t *pq = mi_heap_page_queue_of(heap, page); mi_page_set_in_full(page, true); mi_page_queue_enqueue_from(pq, pqfull, page); } -static void mi_page_to_full(mi_page_t* page, mi_page_queue_t* pq) { +static void mi_page_to_full(mi_page_t *page, mi_page_queue_t *pq) +{ mi_assert_internal(pq == mi_page_queue_of(page)); mi_assert_internal(!mi_page_immediate_available(page)); mi_assert_internal(!mi_page_is_in_full(page)); - if (mi_page_is_in_full(page)) return; + if (mi_page_is_in_full(page)) + return; mi_page_queue_enqueue_from(&mi_page_heap(page)->pages[MI_BIN_FULL], pq, page); - _mi_page_free_collect(page,false); // try to collect right away in case another thread freed just before MI_USE_DELAYED_FREE was set + _mi_page_free_collect(page, false); // try to collect right away in case another thread freed just before MI_USE_DELAYED_FREE was set } - // Abandon a page with used blocks at the end of a thread. // Note: only call if it is ensured that no references exist from // the `page->heap->thread_delayed_free` into this page. // Currently only called through `mi_heap_collect_ex` which ensures this. -void _mi_page_abandon(mi_page_t* page, mi_page_queue_t* pq) { +void _mi_page_abandon(mi_page_t *page, mi_page_queue_t *pq) +{ mi_assert_internal(page != NULL); mi_assert_expensive(_mi_page_is_valid(page)); mi_assert_internal(pq == mi_page_queue_of(page)); mi_assert_internal(mi_page_heap(page) != NULL); - mi_heap_t* pheap = mi_page_heap(page); + mi_heap_t *pheap = mi_page_heap(page); // remove from our page list - mi_segments_tld_t* segments_tld = &pheap->tld->segments; + mi_segments_tld_t *segments_tld = &pheap->tld->segments; mi_page_queue_remove(pq, page); // page is no longer associated with our heap - mi_assert_internal(mi_page_thread_free_flag(page)==MI_NEVER_DELAYED_FREE); + mi_assert_internal(mi_page_thread_free_flag(page) == MI_NEVER_DELAYED_FREE); mi_page_set_heap(page, NULL); -#if MI_DEBUG>1 +#if MI_DEBUG > 1 // check there are no references left.. - for (mi_block_t* block = (mi_block_t*)pheap->thread_delayed_free; block != NULL; block = mi_block_nextx(pheap, block, pheap->keys)) { + for (mi_block_t *block = (mi_block_t *)pheap->thread_delayed_free; block != NULL; block = mi_block_nextx(pheap, block, pheap->keys)) + { mi_assert_internal(_mi_ptr_page(block) != page); } #endif // and abandon it mi_assert_internal(mi_page_heap(page) == NULL); - _mi_segment_page_abandon(page,segments_tld); + _mi_segment_page_abandon(page, segments_tld); } - // Free a page with no more free blocks -void _mi_page_free(mi_page_t* page, mi_page_queue_t* pq, bool force) { +void _mi_page_free(mi_page_t *page, mi_page_queue_t *pq, bool force) +{ mi_assert_internal(page != NULL); mi_assert_expensive(_mi_page_is_valid(page)); mi_assert_internal(pq == mi_page_queue_of(page)); mi_assert_internal(mi_page_all_free(page)); - mi_assert_internal(mi_page_thread_free_flag(page)!=MI_DELAYED_FREEING); + mi_assert_internal(mi_page_thread_free_flag(page) != MI_DELAYED_FREEING); // no more aligned blocks in here mi_page_set_has_aligned(page, false); // remove from the page list // (no need to do _mi_heap_delayed_free first as all blocks are already free) - mi_segments_tld_t* segments_tld = &mi_page_heap(page)->tld->segments; + mi_segments_tld_t *segments_tld = &mi_page_heap(page)->tld->segments; mi_page_queue_remove(pq, page); // and free it - mi_page_set_heap(page,NULL); + mi_page_set_heap(page, NULL); _mi_segment_page_free(page, force, segments_tld); } -#define MI_MAX_RETIRE_SIZE MI_LARGE_OBJ_SIZE_MAX -#define MI_RETIRE_CYCLES (8) +#define MI_MAX_RETIRE_SIZE MI_LARGE_OBJ_SIZE_MAX +#define MI_RETIRE_CYCLES (8) // Retire a page with no more used blocks // Important to not retire too quickly though as new @@ -385,7 +426,8 @@ void _mi_page_free(mi_page_t* page, mi_page_queue_t* pq, bool force) { // Note: called from `mi_free` and benchmarks often // trigger this due to freeing everything and then // allocating again so careful when changing this. -void _mi_page_retire(mi_page_t* page) { +void _mi_page_retire(mi_page_t *page) +{ mi_assert_internal(page != NULL); mi_assert_expensive(_mi_page_is_valid(page)); mi_assert_internal(mi_page_all_free(page)); @@ -398,17 +440,21 @@ void _mi_page_retire(mi_page_t* page) { // is the only page left with free blocks. It is not clear // how to check this efficiently though... // for now, we don't retire if it is the only page left of this size class. - mi_page_queue_t* pq = mi_page_queue_of(page); - if (mi_likely(page->xblock_size <= MI_MAX_RETIRE_SIZE && !mi_page_is_in_full(page))) { - if (pq->last==page && pq->first==page) { // the only page in the queue? - mi_stat_counter_increase(_mi_stats_main.page_no_retire,1); - page->retire_expire = (page->xblock_size <= MI_SMALL_OBJ_SIZE_MAX ? MI_RETIRE_CYCLES : MI_RETIRE_CYCLES/4); - mi_heap_t* heap = mi_page_heap(page); + mi_page_queue_t *pq = mi_page_queue_of(page); + if (mi_likely(page->xblock_size <= MI_MAX_RETIRE_SIZE && !mi_page_is_in_full(page))) + { + if (pq->last == page && pq->first == page) + { // the only page in the queue? + mi_stat_counter_increase(_mi_stats_main.page_no_retire, 1); + page->retire_expire = (page->xblock_size <= MI_SMALL_OBJ_SIZE_MAX ? MI_RETIRE_CYCLES : MI_RETIRE_CYCLES / 4); + mi_heap_t *heap = mi_page_heap(page); mi_assert_internal(pq >= heap->pages); const size_t index = pq - heap->pages; mi_assert_internal(index < MI_BIN_FULL && index < MI_BIN_HUGE); - if (index < heap->page_retired_min) heap->page_retired_min = index; - if (index > heap->page_retired_max) heap->page_retired_max = index; + if (index < heap->page_retired_min) + heap->page_retired_min = index; + if (index > heap->page_retired_max) + heap->page_retired_max = index; mi_assert_internal(mi_page_all_free(page)); return; // dont't free after all } @@ -419,25 +465,34 @@ void _mi_page_retire(mi_page_t* page) { // free retired pages: we don't need to look at the entire queues // since we only retire pages that are at the head position in a queue. -void _mi_heap_collect_retired(mi_heap_t* heap, bool force) { +void _mi_heap_collect_retired(mi_heap_t *heap, bool force) +{ size_t min = MI_BIN_FULL; size_t max = 0; - for(size_t bin = heap->page_retired_min; bin <= heap->page_retired_max; bin++) { - mi_page_queue_t* pq = &heap->pages[bin]; - mi_page_t* page = pq->first; - if (page != NULL && page->retire_expire != 0) { - if (mi_page_all_free(page)) { + for (size_t bin = heap->page_retired_min; bin <= heap->page_retired_max; bin++) + { + mi_page_queue_t *pq = &heap->pages[bin]; + mi_page_t *page = pq->first; + if (page != NULL && page->retire_expire != 0) + { + if (mi_page_all_free(page)) + { page->retire_expire--; - if (force || page->retire_expire == 0) { + if (force || page->retire_expire == 0) + { _mi_page_free(pq->first, pq, force); } - else { + else + { // keep retired, update min/max - if (bin < min) min = bin; - if (bin > max) max = bin; + if (bin < min) + min = bin; + if (bin > max) + max = bin; } } - else { + else + { page->retire_expire = 0; } } @@ -446,93 +501,100 @@ void _mi_heap_collect_retired(mi_heap_t* heap, bool force) { heap->page_retired_max = max; } - /* ----------------------------------------------------------- Initialize the initial free list in a page. In secure mode we initialize a randomized list by alternating between slices. ----------------------------------------------------------- */ -#define MI_MAX_SLICE_SHIFT (6) // at most 64 slices -#define MI_MAX_SLICES (1UL << MI_MAX_SLICE_SHIFT) -#define MI_MIN_SLICES (2) +#define MI_MAX_SLICE_SHIFT (6) // at most 64 slices +#define MI_MAX_SLICES (1UL << MI_MAX_SLICE_SHIFT) +#define MI_MIN_SLICES (2) -static void mi_page_free_list_extend_secure(mi_heap_t* const heap, mi_page_t* const page, const size_t bsize, const size_t extend, mi_stats_t* const stats) { +static void mi_page_free_list_extend_secure(mi_heap_t *const heap, mi_page_t *const page, const size_t bsize, const size_t extend, mi_stats_t *const stats) +{ UNUSED(stats); - #if (MI_SECURE<=2) +#if (MI_SECURE <= 2) mi_assert_internal(page->free == NULL); mi_assert_internal(page->local_free == NULL); - #endif +#endif mi_assert_internal(page->capacity + extend <= page->reserved); mi_assert_internal(bsize == mi_page_block_size(page)); - void* const page_area = _mi_page_start(_mi_page_segment(page), page, NULL); + void *const page_area = _mi_page_start(_mi_page_segment(page), page, NULL); // initialize a randomized free list // set up `slice_count` slices to alternate between size_t shift = MI_MAX_SLICE_SHIFT; - while ((extend >> shift) == 0) { + while ((extend >> shift) == 0) + { shift--; } const size_t slice_count = (size_t)1U << shift; const size_t slice_extend = extend / slice_count; mi_assert_internal(slice_extend >= 1); - mi_block_t* blocks[MI_MAX_SLICES]; // current start of the slice - size_t counts[MI_MAX_SLICES]; // available objects in the slice - for (size_t i = 0; i < slice_count; i++) { - blocks[i] = mi_page_block_at(page, page_area, bsize, page->capacity + i*slice_extend); + mi_block_t *blocks[MI_MAX_SLICES]; // current start of the slice + size_t counts[MI_MAX_SLICES]; // available objects in the slice + for (size_t i = 0; i < slice_count; i++) + { + blocks[i] = mi_page_block_at(page, page_area, bsize, page->capacity + i * slice_extend); counts[i] = slice_extend; } - counts[slice_count-1] += (extend % slice_count); // final slice holds the modulus too (todo: distribute evenly?) + counts[slice_count - 1] += (extend % slice_count); // final slice holds the modulus too (todo: distribute evenly?) // and initialize the free list by randomly threading through them // set up first element const uintptr_t r = _mi_heap_random_next(heap); size_t current = r % slice_count; counts[current]--; - mi_block_t* const free_start = blocks[current]; + mi_block_t *const free_start = blocks[current]; // and iterate through the rest; use `random_shuffle` for performance - uintptr_t rnd = _mi_random_shuffle(r|1); // ensure not 0 - for (size_t i = 1; i < extend; i++) { + uintptr_t rnd = _mi_random_shuffle(r | 1); // ensure not 0 + for (size_t i = 1; i < extend; i++) + { // call random_shuffle only every INTPTR_SIZE rounds - const size_t round = i%MI_INTPTR_SIZE; - if (round == 0) rnd = _mi_random_shuffle(rnd); + const size_t round = i % MI_INTPTR_SIZE; + if (round == 0) + rnd = _mi_random_shuffle(rnd); // select a random next slice index - size_t next = ((rnd >> 8*round) & (slice_count-1)); - while (counts[next]==0) { // ensure it still has space + size_t next = ((rnd >> 8 * round) & (slice_count - 1)); + while (counts[next] == 0) + { // ensure it still has space next++; - if (next==slice_count) next = 0; + if (next == slice_count) + next = 0; } // and link the current block to it counts[next]--; - mi_block_t* const block = blocks[current]; - blocks[current] = (mi_block_t*)((uint8_t*)block + bsize); // bump to the following block - mi_block_set_next(page, block, blocks[next]); // and set next; note: we may have `current == next` + mi_block_t *const block = blocks[current]; + blocks[current] = (mi_block_t *)((uint8_t *)block + bsize); // bump to the following block + mi_block_set_next(page, block, blocks[next]); // and set next; note: we may have `current == next` current = next; } // prepend to the free list (usually NULL) - mi_block_set_next(page, blocks[current], page->free); // end of the list + mi_block_set_next(page, blocks[current], page->free); // end of the list page->free = free_start; } -static mi_decl_noinline void mi_page_free_list_extend( mi_page_t* const page, const size_t bsize, const size_t extend, mi_stats_t* const stats) +static mi_decl_noinline void mi_page_free_list_extend(mi_page_t *const page, const size_t bsize, const size_t extend, mi_stats_t *const stats) { UNUSED(stats); - #if (MI_SECURE <= 2) +#if (MI_SECURE <= 2) mi_assert_internal(page->free == NULL); mi_assert_internal(page->local_free == NULL); - #endif +#endif mi_assert_internal(page->capacity + extend <= page->reserved); mi_assert_internal(bsize == mi_page_block_size(page)); - void* const page_area = _mi_page_start(_mi_page_segment(page), page, NULL ); + void *const page_area = _mi_page_start(_mi_page_segment(page), page, NULL); - mi_block_t* const start = mi_page_block_at(page, page_area, bsize, page->capacity); + mi_block_t *const start = mi_page_block_at(page, page_area, bsize, page->capacity); // initialize a sequential free list - mi_block_t* const last = mi_page_block_at(page, page_area, bsize, page->capacity + extend - 1); - mi_block_t* block = start; - while(block <= last) { - mi_block_t* next = (mi_block_t*)((uint8_t*)block + bsize); - mi_block_set_next(page,block,next); + mi_block_t *const last = mi_page_block_at(page, page_area, bsize, page->capacity + extend - 1); + mi_block_t *block = start; + while (block <= last) + { + mi_block_t *next = (mi_block_t *)((uint8_t *)block + bsize); + mi_block_set_next(page, block, next); block = next; } // prepend to free list (usually `NULL`) @@ -544,11 +606,11 @@ static mi_decl_noinline void mi_page_free_list_extend( mi_page_t* const page, co Page initialize and extend the capacity ----------------------------------------------------------- */ -#define MI_MAX_EXTEND_SIZE (4*1024) // heuristic, one OS page seems to work well. -#if (MI_SECURE>0) -#define MI_MIN_EXTEND (8*MI_SECURE) // extend at least by this many +#define MI_MAX_EXTEND_SIZE (4 * 1024) // heuristic, one OS page seems to work well. +#if (MI_SECURE > 0) +#define MI_MIN_EXTEND (8 * MI_SECURE) // extend at least by this many #else -#define MI_MIN_EXTEND (1) +#define MI_MIN_EXTEND (1) #endif // Extend the capacity (up to reserved) by initializing a free list @@ -556,40 +618,47 @@ static mi_decl_noinline void mi_page_free_list_extend( mi_page_t* const page, co // Note: we also experimented with "bump" allocation on the first // allocations but this did not speed up any benchmark (due to an // extra test in malloc? or cache effects?) -static void mi_page_extend_free(mi_heap_t* heap, mi_page_t* page, mi_tld_t* tld) { +static void mi_page_extend_free(mi_heap_t *heap, mi_page_t *page, mi_tld_t *tld) +{ mi_assert_expensive(mi_page_is_valid_init(page)); - #if (MI_SECURE<=2) +#if (MI_SECURE <= 2) mi_assert(page->free == NULL); mi_assert(page->local_free == NULL); - if (page->free != NULL) return; - #endif - if (page->capacity >= page->reserved) return; + if (page->free != NULL) + return; +#endif + if (page->capacity >= page->reserved) + return; size_t page_size; - //uint8_t* page_start = + //uint8_t* page_start = _mi_page_start(_mi_page_segment(page), page, &page_size); mi_stat_counter_increase(tld->stats.pages_extended, 1); // calculate the extend count const size_t bsize = (page->xblock_size < MI_HUGE_BLOCK_SIZE ? page->xblock_size : page_size); size_t extend = page->reserved - page->capacity; - size_t max_extend = (bsize >= MI_MAX_EXTEND_SIZE ? MI_MIN_EXTEND : MI_MAX_EXTEND_SIZE/(uint32_t)bsize); - if (max_extend < MI_MIN_EXTEND) max_extend = MI_MIN_EXTEND; + size_t max_extend = (bsize >= MI_MAX_EXTEND_SIZE ? MI_MIN_EXTEND : MI_MAX_EXTEND_SIZE / (uint32_t)bsize); + if (max_extend < MI_MIN_EXTEND) + max_extend = MI_MIN_EXTEND; - if (extend > max_extend) { + if (extend > max_extend) + { // ensure we don't touch memory beyond the page to reduce page commit. // the `lean` benchmark tests this. Going from 1 to 8 increases rss by 50%. - extend = (max_extend==0 ? 1 : max_extend); + extend = (max_extend == 0 ? 1 : max_extend); } mi_assert_internal(extend > 0 && extend + page->capacity <= page->reserved); - mi_assert_internal(extend < (1UL<<16)); + mi_assert_internal(extend < (1UL << 16)); // and append the extend the free list - if (extend < MI_MIN_SLICES || MI_SECURE==0) { //!mi_option_is_enabled(mi_option_secure)) { - mi_page_free_list_extend(page, bsize, extend, &tld->stats ); + if (extend < MI_MIN_SLICES || MI_SECURE == 0) + { //!mi_option_is_enabled(mi_option_secure)) { + mi_page_free_list_extend(page, bsize, extend, &tld->stats); } - else { + else + { mi_page_free_list_extend_secure(heap, page, bsize, extend, &tld->stats); } // enable the new free list @@ -597,16 +666,18 @@ static void mi_page_extend_free(mi_heap_t* heap, mi_page_t* page, mi_tld_t* tld) mi_stat_increase(tld->stats.page_committed, extend * bsize); // extension into zero initialized memory preserves the zero'd free list - if (!page->is_zero_init) { + if (!page->is_zero_init) + { page->is_zero = false; } mi_assert_expensive(mi_page_is_valid_init(page)); } // Initialize a fresh page -static void mi_page_init(mi_heap_t* heap, mi_page_t* page, size_t block_size, mi_tld_t* tld) { +static void mi_page_init(mi_heap_t *heap, mi_page_t *page, size_t block_size, mi_tld_t *tld) +{ mi_assert(page != NULL); - mi_segment_t* segment = _mi_page_segment(page); + mi_segment_t *segment = _mi_page_segment(page); mi_assert(segment != NULL); mi_assert_internal(block_size > 0); // set fields @@ -614,12 +685,12 @@ static void mi_page_init(mi_heap_t* heap, mi_page_t* page, size_t block_size, mi size_t page_size; _mi_segment_page_start(segment, page, block_size, &page_size, NULL); page->xblock_size = (block_size < MI_HUGE_BLOCK_SIZE ? (uint32_t)block_size : MI_HUGE_BLOCK_SIZE); - mi_assert_internal(page_size / block_size < (1L<<16)); + mi_assert_internal(page_size / block_size < (1L << 16)); page->reserved = (uint16_t)(page_size / block_size); - #ifdef MI_ENCODE_FREELIST +#ifdef MI_ENCODE_FREELIST page->keys[0] = _mi_heap_random_next(heap); page->keys[1] = _mi_heap_random_next(heap); - #endif +#endif page->is_zero = page->is_zero_init; mi_assert_internal(page->capacity == 0); @@ -630,43 +701,44 @@ static void mi_page_init(mi_heap_t* heap, mi_page_t* page, size_t block_size, mi mi_assert_internal(page->prev == NULL); mi_assert_internal(page->retire_expire == 0); mi_assert_internal(!mi_page_has_aligned(page)); - #if (MI_ENCODE_FREELIST) +#if (MI_ENCODE_FREELIST) mi_assert_internal(page->keys[0] != 0); mi_assert_internal(page->keys[1] != 0); - #endif +#endif mi_assert_expensive(mi_page_is_valid_init(page)); // initialize an initial free list - mi_page_extend_free(heap,page,tld); + mi_page_extend_free(heap, page, tld); mi_assert(mi_page_immediate_available(page)); } - /* ----------------------------------------------------------- Find pages with free blocks -------------------------------------------------------------*/ // Find a page with free blocks of `page->block_size`. -static mi_page_t* mi_page_queue_find_free_ex(mi_heap_t* heap, mi_page_queue_t* pq, bool first_try) +static mi_page_t *mi_page_queue_find_free_ex(mi_heap_t *heap, mi_page_queue_t *pq, bool first_try) { // search through the pages in "next fit" order size_t count = 0; - mi_page_t* page = pq->first; + mi_page_t *page = pq->first; while (page != NULL) { - mi_page_t* next = page->next; // remember next + mi_page_t *next = page->next; // remember next count++; // 0. collect freed blocks by us and other threads _mi_page_free_collect(page, false); // 1. if the page contains free blocks, we are done - if (mi_page_immediate_available(page)) { - break; // pick this one + if (mi_page_immediate_available(page)) + { + break; // pick this one } // 2. Try to extend - if (page->capacity < page->reserved) { + if (page->capacity < page->reserved) + { mi_page_extend_free(heap, page, heap->tld); mi_assert_internal(mi_page_immediate_available(page)); break; @@ -682,15 +754,18 @@ static mi_page_t* mi_page_queue_find_free_ex(mi_heap_t* heap, mi_page_queue_t* p mi_stat_counter_increase(heap->tld->stats.searches, count); - if (page == NULL) { + if (page == NULL) + { _mi_heap_collect_retired(heap, false); // perhaps make a page available page = mi_page_fresh(heap, pq); - if (page == NULL && first_try) { + if (page == NULL && first_try) + { // out-of-memory _or_ an abandoned page with free blocks was reclaimed, try once again - page = mi_page_queue_find_free_ex(heap, pq, false); + page = mi_page_queue_find_free_ex(heap, pq, false); } } - else { + else + { mi_assert(pq->first == page); page->retire_expire = 0; } @@ -698,25 +773,27 @@ static mi_page_t* mi_page_queue_find_free_ex(mi_heap_t* heap, mi_page_queue_t* p return page; } - - // Find a page with free blocks of `size`. -static inline mi_page_t* mi_find_free_page(mi_heap_t* heap, size_t size) { - mi_page_queue_t* pq = mi_page_queue(heap,size); - mi_page_t* page = pq->first; - if (page != NULL) { - #if (MI_SECURE>=3) // in secure mode, we extend half the time to increase randomness - if (page->capacity < page->reserved && ((_mi_heap_random_next(heap) & 1) == 1)) { +static inline mi_page_t *mi_find_free_page(mi_heap_t *heap, size_t size) +{ + mi_page_queue_t *pq = mi_page_queue(heap, size); + mi_page_t *page = pq->first; + if (page != NULL) + { +#if (MI_SECURE >= 3) // in secure mode, we extend half the time to increase randomness + if (page->capacity < page->reserved && ((_mi_heap_random_next(heap) & 1) == 1)) + { mi_page_extend_free(heap, page, heap->tld); mi_assert_internal(mi_page_immediate_available(page)); } - else - #endif + else +#endif { - _mi_page_free_collect(page,false); + _mi_page_free_collect(page, false); } - - if (mi_page_immediate_available(page)) { + + if (mi_page_immediate_available(page)) + { page->retire_expire = 0; return page; // fast path } @@ -724,7 +801,6 @@ static inline mi_page_t* mi_find_free_page(mi_heap_t* heap, size_t size) { return mi_page_queue_find_free_ex(heap, pq, true); } - /* ----------------------------------------------------------- Users can register a deferred free function called when the `free` list is empty. Since the `local_free` @@ -732,24 +808,32 @@ static inline mi_page_t* mi_find_free_page(mi_heap_t* heap, size_t size) { a certain number of allocations. ----------------------------------------------------------- */ -static mi_deferred_free_fun* volatile deferred_free = NULL; -static _Atomic(void*) deferred_arg; // = NULL +static mi_deferred_free_fun *volatile deferred_free = NULL; +static _Atomic(void *) deferred_arg; // = NULL -void _mi_deferred_free(mi_heap_t* heap, bool force) { +void _mi_deferred_free(mi_heap_t *heap, bool force) +{ heap->tld->heartbeat++; - if (deferred_free != NULL && !heap->tld->recurse) { + if (heap->deferred_free != NULL && !heap->tld->recurse) + { heap->tld->recurse = true; - deferred_free(force, heap->tld->heartbeat, mi_atomic_load_ptr_relaxed(void,&deferred_arg)); + ((mi_local_deferred_free_fun *)heap->deferred_free)(heap, force, heap->tld->heartbeat, heap->deferred_arg); + heap->tld->recurse = false; + } + if (deferred_free != NULL && !heap->tld->recurse) + { + heap->tld->recurse = true; + deferred_free(force, heap->tld->heartbeat, mi_atomic_load_ptr_relaxed(void, &deferred_arg)); heap->tld->recurse = false; } } -void mi_register_deferred_free(mi_deferred_free_fun* fn, void* arg) mi_attr_noexcept { +void mi_register_deferred_free(mi_deferred_free_fun *fn, void *arg) mi_attr_noexcept +{ deferred_free = fn; - mi_atomic_store_ptr_release(void,&deferred_arg, arg); + mi_atomic_store_ptr_release(void, &deferred_arg, arg); } - /* ----------------------------------------------------------- General allocation ----------------------------------------------------------- */ @@ -758,24 +842,28 @@ void mi_register_deferred_free(mi_deferred_free_fun* fn, void* arg) mi_attr_noex // Because huge pages contain just one block, and the segment contains // just that page, we always treat them as abandoned and any thread // that frees the block can free the whole page and segment directly. -static mi_page_t* mi_huge_page_alloc(mi_heap_t* heap, size_t size) { +static mi_page_t *mi_huge_page_alloc(mi_heap_t *heap, size_t size) +{ size_t block_size = _mi_os_good_alloc_size(size); mi_assert_internal(_mi_bin(block_size) == MI_BIN_HUGE); - mi_page_t* page = mi_page_fresh_alloc(heap,NULL,block_size); - if (page != NULL) { - const size_t bsize = mi_page_block_size(page); // note: not `mi_page_usable_block_size` as `size` includes padding already + mi_page_t *page = mi_page_fresh_alloc(heap, NULL, block_size); + if (page != NULL) + { + const size_t bsize = mi_page_block_size(page); // note: not `mi_page_usable_block_size` as `size` includes padding already mi_assert_internal(bsize >= size); mi_assert_internal(mi_page_immediate_available(page)); - mi_assert_internal(_mi_page_segment(page)->page_kind==MI_PAGE_HUGE); - mi_assert_internal(_mi_page_segment(page)->used==1); - mi_assert_internal(_mi_page_segment(page)->thread_id==0); // abandoned, not in the huge queue + mi_assert_internal(_mi_page_segment(page)->page_kind == MI_PAGE_HUGE); + mi_assert_internal(_mi_page_segment(page)->used == 1); + mi_assert_internal(_mi_page_segment(page)->thread_id == 0); // abandoned, not in the huge queue mi_page_set_heap(page, NULL); - if (bsize > MI_HUGE_OBJ_SIZE_MAX) { + if (bsize > MI_HUGE_OBJ_SIZE_MAX) + { _mi_stat_increase(&heap->tld->stats.giant, bsize); _mi_stat_counter_increase(&heap->tld->stats.giant_count, 1); } - else { + else + { _mi_stat_increase(&heap->tld->stats.huge, bsize); _mi_stat_counter_increase(&heap->tld->stats.huge_count, 1); } @@ -783,22 +871,26 @@ static mi_page_t* mi_huge_page_alloc(mi_heap_t* heap, size_t size) { return page; } - // Allocate a page // Note: in debug mode the size includes MI_PADDING_SIZE and might have overflowed. -static mi_page_t* mi_find_page(mi_heap_t* heap, size_t size) mi_attr_noexcept { +static mi_page_t *mi_find_page(mi_heap_t *heap, size_t size) mi_attr_noexcept +{ // huge allocation? - const size_t req_size = size - MI_PADDING_SIZE; // correct for padding_size in case of an overflow on `size` - if (mi_unlikely(req_size > (MI_LARGE_OBJ_SIZE_MAX - MI_PADDING_SIZE) )) { - if (mi_unlikely(req_size > PTRDIFF_MAX)) { // we don't allocate more than PTRDIFF_MAX (see ) + const size_t req_size = size - MI_PADDING_SIZE; // correct for padding_size in case of an overflow on `size` + if (mi_unlikely(req_size > (MI_LARGE_OBJ_SIZE_MAX - MI_PADDING_SIZE))) + { + if (mi_unlikely(req_size > PTRDIFF_MAX)) + { // we don't allocate more than PTRDIFF_MAX (see ) _mi_error_message(EOVERFLOW, "allocation request is too large (%zu bytes)\n", req_size); return NULL; } - else { - return mi_huge_page_alloc(heap,size); + else + { + return mi_huge_page_alloc(heap, size); } } - else { + else + { // otherwise find a page with free blocks in our size segregated queues mi_assert_internal(size >= MI_PADDING_SIZE); return mi_find_free_page(heap, size); @@ -807,15 +899,19 @@ static mi_page_t* mi_find_page(mi_heap_t* heap, size_t size) mi_attr_noexcept { // Generic allocation routine if the fast path (`alloc.c:mi_page_malloc`) does not succeed. // Note: in debug mode the size includes MI_PADDING_SIZE and might have overflowed. -void* _mi_malloc_generic(mi_heap_t* heap, size_t size) mi_attr_noexcept +void *_mi_malloc_generic(mi_heap_t *heap, size_t size) mi_attr_noexcept { mi_assert_internal(heap != NULL); // initialize if necessary - if (mi_unlikely(!mi_heap_is_initialized(heap))) { + if (mi_unlikely(!mi_heap_is_initialized(heap))) + { mi_thread_init(); // calls `_mi_heap_init` in turn heap = mi_get_default_heap(); - if (mi_unlikely(!mi_heap_is_initialized(heap))) { return NULL; } + if (mi_unlikely(!mi_heap_is_initialized(heap))) + { + return NULL; + } } mi_assert_internal(mi_heap_is_initialized(heap)); @@ -826,14 +922,16 @@ void* _mi_malloc_generic(mi_heap_t* heap, size_t size) mi_attr_noexcept _mi_heap_delayed_free(heap); // find (or allocate) a page of the right size - mi_page_t* page = mi_find_page(heap, size); - if (mi_unlikely(page == NULL)) { // first time out of memory, try to collect and retry the allocation once more + mi_page_t *page = mi_find_page(heap, size); + if (mi_unlikely(page == NULL)) + { // first time out of memory, try to collect and retry the allocation once more mi_heap_collect(heap, true /* force */); page = mi_find_page(heap, size); } - if (mi_unlikely(page == NULL)) { // out of memory - const size_t req_size = size - MI_PADDING_SIZE; // correct for padding_size in case of an overflow on `size` + if (mi_unlikely(page == NULL)) + { // out of memory + const size_t req_size = size - MI_PADDING_SIZE; // correct for padding_size in case of an overflow on `size` _mi_error_message(ENOMEM, "unable to allocate memory (%zu bytes)\n", req_size); return NULL; }