diff options
author | Victor Stinner <vstinner@redhat.com> | 2019-05-17 13:20:52 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-17 13:20:52 (GMT) |
commit | b16b4e45923f4e4dfd8e970ae4e6a934faf73b79 (patch) | |
tree | fb7b3abc251f148386efdad7a5cde5d13d157d38 /Include/cpython | |
parent | 80ed353329ef01ca6ab2056051fb999818a86215 (diff) | |
download | cpython-b16b4e45923f4e4dfd8e970ae4e6a934faf73b79.zip cpython-b16b4e45923f4e4dfd8e970ae4e6a934faf73b79.tar.gz cpython-b16b4e45923f4e4dfd8e970ae4e6a934faf73b79.tar.bz2 |
bpo-36763: Add PyMemAllocatorName (GH-13387)
* Add PyMemAllocatorName enum
* _PyPreConfig.allocator type becomes PyMemAllocatorName, instead of
char*
* Remove _PyPreConfig_Clear()
* Add _PyMem_GetAllocatorName()
* Rename _PyMem_GetAllocatorsName() to
_PyMem_GetCurrentAllocatorName()
* Remove _PyPreConfig_SetAllocator(): just call
_PyMem_SetupAllocators() directly, we don't have do reallocate the
configuration with the new allocator anymore!
* _PyPreConfig_Write() parameter becomes const, as it should be in
the first place!
Diffstat (limited to 'Include/cpython')
-rw-r--r-- | Include/cpython/coreconfig.h | 6 | ||||
-rw-r--r-- | Include/cpython/pymem.h | 19 |
2 files changed, 18 insertions, 7 deletions
diff --git a/Include/cpython/coreconfig.h b/Include/cpython/coreconfig.h index 1ba2663..dca4134 100644 --- a/Include/cpython/coreconfig.h +++ b/Include/cpython/coreconfig.h @@ -120,7 +120,9 @@ typedef struct { int utf8_mode; int dev_mode; /* Development mode. PYTHONDEVMODE, -X dev */ - char *allocator; /* Memory allocator: PYTHONMALLOC */ + + /* Memory allocator: PYTHONMALLOC env var */ + PyMemAllocatorName allocator; } _PyPreConfig; #ifdef MS_WINDOWS @@ -137,7 +139,7 @@ typedef struct { .isolated = -1, \ .use_environment = -1, \ .dev_mode = -1, \ - .allocator = NULL} + .allocator = PYMEM_ALLOCATOR_NOT_SET} /* --- _PyCoreConfig ---------------------------------------------- */ diff --git a/Include/cpython/pymem.h b/Include/cpython/pymem.h index bd66506..79f063b 100644 --- a/Include/cpython/pymem.h +++ b/Include/cpython/pymem.h @@ -11,12 +11,8 @@ PyAPI_FUNC(void *) PyMem_RawCalloc(size_t nelem, size_t elsize); PyAPI_FUNC(void *) PyMem_RawRealloc(void *ptr, size_t new_size); PyAPI_FUNC(void) PyMem_RawFree(void *ptr); -/* Configure the Python memory allocators. Pass NULL to use default - allocators. */ -PyAPI_FUNC(int) _PyMem_SetupAllocators(const char *opt); - /* Try to get the allocators name set by _PyMem_SetupAllocators(). */ -PyAPI_FUNC(const char*) _PyMem_GetAllocatorsName(void); +PyAPI_FUNC(const char*) _PyMem_GetCurrentAllocatorName(void); PyAPI_FUNC(void *) PyMem_Calloc(size_t nelem, size_t elsize); @@ -41,6 +37,19 @@ typedef enum { PYMEM_DOMAIN_OBJ } PyMemAllocatorDomain; +typedef enum { + PYMEM_ALLOCATOR_NOT_SET = 0, + PYMEM_ALLOCATOR_DEFAULT = 1, + PYMEM_ALLOCATOR_DEBUG = 2, + PYMEM_ALLOCATOR_MALLOC = 3, + PYMEM_ALLOCATOR_MALLOC_DEBUG = 4, +#ifdef WITH_PYMALLOC + PYMEM_ALLOCATOR_PYMALLOC = 5, + PYMEM_ALLOCATOR_PYMALLOC_DEBUG = 6, +#endif +} PyMemAllocatorName; + + typedef struct { /* user context passed as the first argument to the 4 functions */ void *ctx; |