summaryrefslogtreecommitdiffstats
path: root/Makefile.pre.in
diff options
context:
space:
mode:
authorDino Viehland <dinoviehland@fb.com>2023-10-30 15:43:11 (GMT)
committerGitHub <noreply@github.com>2023-10-30 15:43:11 (GMT)
commit05f2f0ac92afa560315eb66fd6576683c7f69e2d (patch)
treea6a4746103a67f06f04ff6df9f290f0305ff9dd5 /Makefile.pre.in
parent4ebf2fae9664a4042511059627f44d46dceb2e09 (diff)
downloadcpython-05f2f0ac92afa560315eb66fd6576683c7f69e2d.zip
cpython-05f2f0ac92afa560315eb66fd6576683c7f69e2d.tar.gz
cpython-05f2f0ac92afa560315eb66fd6576683c7f69e2d.tar.bz2
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>
Diffstat (limited to 'Makefile.pre.in')
-rw-r--r--Makefile.pre.in35
1 files changed, 34 insertions, 1 deletions
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 067bf12..733c685 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -100,7 +100,7 @@ CONFIGURE_LDFLAGS= @LDFLAGS@
# command line to append to these values without stomping the pre-set
# values.
PY_CFLAGS= $(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
-PY_CFLAGS_NODIST=$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal
+PY_CFLAGS_NODIST=$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal -I$(srcdir)/Include/internal/mimalloc
# Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to
# be able to build extension modules using the directories specified in the
# environment variables
@@ -336,6 +336,20 @@ IO_OBJS= \
Modules/_io/bytesio.o \
Modules/_io/stringio.o
+
+##########################################################################
+# mimalloc
+
+MIMALLOC_HEADERS= \
+ $(srcdir)/Include/internal/pycore_mimalloc.h \
+ $(srcdir)/Include/internal/mimalloc/mimalloc.h \
+ $(srcdir)/Include/internal/mimalloc/mimalloc/atomic.h \
+ $(srcdir)/Include/internal/mimalloc/mimalloc/internal.h \
+ $(srcdir)/Include/internal/mimalloc/mimalloc/prim.h \
+ $(srcdir)/Include/internal/mimalloc/mimalloc/track.h \
+ $(srcdir)/Include/internal/mimalloc/mimalloc/types.h
+
+
##########################################################################
# Parser
@@ -1538,6 +1552,23 @@ Objects/unicodeobject.o: $(srcdir)/Objects/unicodeobject.c $(UNICODE_DEPS)
Objects/dictobject.o: $(srcdir)/Objects/stringlib/eq.h
Objects/setobject.o: $(srcdir)/Objects/stringlib/eq.h
+Objects/obmalloc.o: $(srcdir)/Objects/mimalloc/alloc.c \
+ $(srcdir)/Objects/mimalloc/alloc-aligned.c \
+ $(srcdir)/Objects/mimalloc/alloc-posix.c \
+ $(srcdir)/Objects/mimalloc/arena.c \
+ $(srcdir)/Objects/mimalloc/bitmap.c \
+ $(srcdir)/Objects/mimalloc/heap.c \
+ $(srcdir)/Objects/mimalloc/init.c \
+ $(srcdir)/Objects/mimalloc/options.c \
+ $(srcdir)/Objects/mimalloc/os.c \
+ $(srcdir)/Objects/mimalloc/page.c \
+ $(srcdir)/Objects/mimalloc/random.c \
+ $(srcdir)/Objects/mimalloc/segment.c \
+ $(srcdir)/Objects/mimalloc/segment-map.c \
+ $(srcdir)/Objects/mimalloc/stats.c \
+ $(srcdir)/Objects/mimalloc/prim/prim.c
+
+Objects/mimalloc/page.o: $(srcdir)/Objects/mimalloc/page-queue.c
.PHONY: regen-cases
regen-cases:
@@ -1749,6 +1780,8 @@ PYTHON_HEADERS= \
$(srcdir)/Include/cpython/warnings.h \
$(srcdir)/Include/cpython/weakrefobject.h \
\
+ @MIMALLOC_HEADERS@ \
+ \
$(srcdir)/Include/internal/pycore_abstract.h \
$(srcdir)/Include/internal/pycore_asdl.h \
$(srcdir)/Include/internal/pycore_ast.h \