mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
gh-90815: Add mimalloc memory allocator (#109914)
* Add mimalloc v2.12 Modified src/alloc.c to remove include of alloc-override.c and not compile new handler. Did not include the following files: - include/mimalloc-new-delete.h - include/mimalloc-override.h - src/alloc-override-osx.c - src/alloc-override.c - src/static.c - src/region.c mimalloc is thread safe and shares a single heap across all runtimes, therefore finalization and getting global allocated blocks across all runtimes is different. * mimalloc: minimal changes for use in Python: - remove debug spam for freeing large allocations - use same bytes (0xDD) for freed allocations in CPython and mimalloc This is important for the test_capi debug memory tests * Don't export mimalloc symbol in libpython. * Enable mimalloc as Python allocator option. * Add mimalloc MIT license. * Log mimalloc in Lib/test/pythoninfo.py. * Document new mimalloc support. * Use macro defs for exports as done in: https://github.com/python/cpython/pull/31164/ Co-authored-by: Sam Gross <colesbury@gmail.com> Co-authored-by: Christian Heimes <christian@python.org> Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
parent
4ebf2fae96
commit
05f2f0ac92
61 changed files with 16792 additions and 161 deletions
|
@ -147,6 +147,20 @@
|
|||
<ClCompile Include="..\Objects\longobject.c" />
|
||||
<ClCompile Include="..\Objects\memoryobject.c" />
|
||||
<ClCompile Include="..\Objects\methodobject.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\alloc-aligned.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\alloc.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\arena.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\bitmap.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\heap.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\init.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\options.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\os.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\page.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\prim\prim.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\random.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\segment.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\segment-map.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\stats.c" />
|
||||
<ClCompile Include="..\Objects\moduleobject.c" />
|
||||
<ClCompile Include="..\Objects\namespaceobject.c" />
|
||||
<ClCompile Include="..\Objects\object.c" />
|
||||
|
|
|
@ -250,6 +250,48 @@
|
|||
<ClCompile Include="..\Objects\methodobject.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\alloc-aligned.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</CLCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\alloc.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</CLCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\arena.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</CLCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\bitmap.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</CLCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\heap.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</CLCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\init.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</CLCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\options.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</CLCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\os.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</CLCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\page.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</CLCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\prim\prim.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</CLCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\random.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</CLCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\segment.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</CLCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\segment-map.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</CLCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\stats.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</CLCompile>
|
||||
<ClCompile Include="..\Python\modsupport.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(PySourcePath)Include;$(PySourcePath)Include\internal;$(PySourcePath)PC;$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(PySourcePath)Include;$(PySourcePath)Include\internal;$(PySourcePath)Include\internal\mimalloc;$(PySourcePath)PC;$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;$(_Py3NamePreprocessorDefinition);$(_PlatformPreprocessorDefinition)$(_DebugPreprocessorDefinition)$(_PydPreprocessorDefinition)%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions Condition="'$(DisableGil)' == 'true'">Py_NOGIL=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
|
||||
|
|
|
@ -300,6 +300,12 @@
|
|||
<ClInclude Include="..\Include\marshal.h" />
|
||||
<ClInclude Include="..\Include\memoryobject.h" />
|
||||
<ClInclude Include="..\Include\methodobject.h" />
|
||||
<ClInclude Include="..\Include\internal\mimalloc\mimalloc\atomic.h" />
|
||||
<ClInclude Include="..\Include\internal\mimalloc\mimalloc\internal.h" />
|
||||
<ClInclude Include="..\Include\internal\mimalloc\mimalloc\prim.h" />
|
||||
<ClInclude Include="..\Include\internal\mimalloc\mimalloc\track.h" />
|
||||
<ClInclude Include="..\Include\internal\mimalloc\mimalloc\types.h" />
|
||||
<ClInclude Include="..\Include\internal\mimalloc\mimalloc.h" />
|
||||
<ClInclude Include="..\Include\modsupport.h" />
|
||||
<ClInclude Include="..\Include\moduleobject.h" />
|
||||
<ClInclude Include="..\Include\object.h" />
|
||||
|
@ -491,6 +497,20 @@
|
|||
<ClCompile Include="..\Objects\longobject.c" />
|
||||
<ClCompile Include="..\Objects\memoryobject.c" />
|
||||
<ClCompile Include="..\Objects\methodobject.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\alloc-aligned.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\alloc.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\arena.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\bitmap.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\heap.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\init.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\options.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\os.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\page.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\prim\prim.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\random.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\segment.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\segment-map.c" />
|
||||
<ClCompile Include="..\Objects\mimalloc\stats.c" />
|
||||
<ClCompile Include="..\Objects\moduleobject.c" />
|
||||
<ClCompile Include="..\Objects\namespaceobject.c" />
|
||||
<ClCompile Include="..\Objects\object.c" />
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
<Filter Include="Include">
|
||||
<UniqueIdentifier>{086b0afb-270c-4603-a02a-63d46f0b2b92}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Include\internal\mimalloc">
|
||||
<UniqueIdentifier>{1dc8d8bd-d493-478e-9b7a-7eb108bb8bd5}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Modules">
|
||||
<UniqueIdentifier>{8e81609f-13ca-4eae-9fdb-f8af20c710c7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
|
@ -19,6 +22,9 @@
|
|||
<Filter Include="Objects">
|
||||
<UniqueIdentifier>{ab29a558-143d-4fe7-a039-b431fb429856}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Objects\mimalloc">
|
||||
<UniqueIdentifier>{ad449c55-23cb-44f8-ada4-04b23c9ec388}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Parser">
|
||||
<UniqueIdentifier>{97349fee-0abf-48b0-a8f5-771bf39b8aee}</UniqueIdentifier>
|
||||
</Filter>
|
||||
|
@ -783,6 +789,24 @@
|
|||
<ClInclude Include="..\Include\internal\pycore_uops.h">
|
||||
<Filter>Include\internal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Include\internal\mimalloc\mimalloc.h">
|
||||
<Filter>Include\internal\mimalloc</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Include\internal\mimalloc\mimalloc\atomic.h">
|
||||
<Filter>Include\internal\mimalloc</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Include\internal\mimalloc\mimalloc\internal.h">
|
||||
<Filter>Include\internal\mimalloc</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Include\internal\mimalloc\mimalloc\prim.h">
|
||||
<Filter>Include\internal\mimalloc</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Include\internal\mimalloc\mimalloc\track.h">
|
||||
<Filter>Include\internal\mimalloc</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Include\internal\mimalloc\mimalloc\types.h">
|
||||
<Filter>Include\internal\mimalloc</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="$(zlibDir)\crc32.h">
|
||||
<Filter>Modules\zlib</Filter>
|
||||
</ClInclude>
|
||||
|
@ -1103,6 +1127,48 @@
|
|||
<ClCompile Include="..\Objects\methodobject.c">
|
||||
<Filter>Objects</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\alloc.c">
|
||||
<Filter>Objects\mimalloc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\alloc-aligned.c">
|
||||
<Filter>Objects\mimalloc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\arena.c">
|
||||
<Filter>Objects\mimalloc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\bitmap.c">
|
||||
<Filter>Objects\mimalloc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\heap.c">
|
||||
<Filter>Objects\mimalloc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\init.c">
|
||||
<Filter>Objects\mimalloc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\options.c">
|
||||
<Filter>Objects\mimalloc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\os.c">
|
||||
<Filter>Objects\mimalloc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\page.c">
|
||||
<Filter>Objects\mimalloc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\prim\prim.c">
|
||||
<Filter>Objects\mimalloc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\random.c">
|
||||
<Filter>Objects\mimalloc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\segment.c">
|
||||
<Filter>Objects\mimalloc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\segment-map.c">
|
||||
<Filter>Objects\mimalloc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Objects\mimalloc\stats.c">
|
||||
<Filter>Objects\mimalloc</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Objects\moduleobject.c">
|
||||
<Filter>Objects</Filter>
|
||||
</ClCompile>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue