codekingpro/portable-devtools
114k
1#ifndef Py_INTERNAL_PYMEM_INIT_H2#define Py_INTERNAL_PYMEM_INIT_H3#ifdef __cplusplus4extern "C" {5#endif6 7#ifndef Py_BUILD_CORE8# error "this header requires Py_BUILD_CORE define"9#endif10 11 12/********************************/13/* the allocators' initializers */14 15extern void * _PyMem_RawMalloc(void *, size_t);16extern void * _PyMem_RawCalloc(void *, size_t, size_t);17extern void * _PyMem_RawRealloc(void *, void *, size_t);18extern void _PyMem_RawFree(void *, void *);19#define PYRAW_ALLOC {NULL, _PyMem_RawMalloc, _PyMem_RawCalloc, _PyMem_RawRealloc, _PyMem_RawFree}20 21#ifdef Py_GIL_DISABLED22// Py_GIL_DISABLED requires mimalloc23extern void* _PyObject_MiMalloc(void *, size_t);24extern void* _PyObject_MiCalloc(void *, size_t, size_t);25extern void _PyObject_MiFree(void *, void *);26extern void* _PyObject_MiRealloc(void *, void *, size_t);27# define PYOBJ_ALLOC {NULL, _PyObject_MiMalloc, _PyObject_MiCalloc, _PyObject_MiRealloc, _PyObject_MiFree}28extern void* _PyMem_MiMalloc(void *, size_t);29extern void* _PyMem_MiCalloc(void *, size_t, size_t);30extern void _PyMem_MiFree(void *, void *);31extern void* _PyMem_MiRealloc(void *, void *, size_t);32# define PYMEM_ALLOC {NULL, _PyMem_MiMalloc, _PyMem_MiCalloc, _PyMem_MiRealloc, _PyMem_MiFree}33#elif defined(WITH_PYMALLOC)34extern void* _PyObject_Malloc(void *, size_t);35extern void* _PyObject_Calloc(void *, size_t, size_t);36extern void _PyObject_Free(void *, void *);37extern void* _PyObject_Realloc(void *, void *, size_t);38# define PYOBJ_ALLOC {NULL, _PyObject_Malloc, _PyObject_Calloc, _PyObject_Realloc, _PyObject_Free}39# define PYMEM_ALLOC PYOBJ_ALLOC40#else41# define PYOBJ_ALLOC PYRAW_ALLOC42# define PYMEM_ALLOC PYOBJ_ALLOC43#endif // WITH_PYMALLOC44 45 46extern void* _PyMem_DebugRawMalloc(void *, size_t);47extern void* _PyMem_DebugRawCalloc(void *, size_t, size_t);48extern void* _PyMem_DebugRawRealloc(void *, void *, size_t);49extern void _PyMem_DebugRawFree(void *, void *);50 51extern void* _PyMem_DebugMalloc(void *, size_t);52extern void* _PyMem_DebugCalloc(void *, size_t, size_t);53extern void* _PyMem_DebugRealloc(void *, void *, size_t);54extern void _PyMem_DebugFree(void *, void *);55 56#define PYDBGRAW_ALLOC(runtime) \57 {&(runtime).allocators.debug.raw, _PyMem_DebugRawMalloc, _PyMem_DebugRawCalloc, _PyMem_DebugRawRealloc, _PyMem_DebugRawFree}58#define PYDBGMEM_ALLOC(runtime) \59 {&(runtime).allocators.debug.mem, _PyMem_DebugMalloc, _PyMem_DebugCalloc, _PyMem_DebugRealloc, _PyMem_DebugFree}60#define PYDBGOBJ_ALLOC(runtime) \61 {&(runtime).allocators.debug.obj, _PyMem_DebugMalloc, _PyMem_DebugCalloc, _PyMem_DebugRealloc, _PyMem_DebugFree}62 63extern void * _PyMem_ArenaAlloc(void *, size_t);64extern void _PyMem_ArenaFree(void *, void *, size_t);65 66#ifdef Py_DEBUG67# define _pymem_allocators_standard_INIT(runtime) \68 { \69 PYDBGRAW_ALLOC(runtime), \70 PYDBGMEM_ALLOC(runtime), \71 PYDBGOBJ_ALLOC(runtime), \72 }73# define _pymem_is_debug_enabled_INIT 174#else75# define _pymem_allocators_standard_INIT(runtime) \76 { \77 PYRAW_ALLOC, \78 PYMEM_ALLOC, \79 PYOBJ_ALLOC, \80 }81# define _pymem_is_debug_enabled_INIT 082#endif83 84#define _pymem_allocators_debug_INIT \85 { \86 {'r', PYRAW_ALLOC}, \87 {'m', PYMEM_ALLOC}, \88 {'o', PYOBJ_ALLOC}, \89 }90 91# define _pymem_allocators_obj_arena_INIT \92 { NULL, _PyMem_ArenaAlloc, _PyMem_ArenaFree }93 94 95#define _Py_mem_free_queue_INIT(queue) \96 { \97 .head = LLIST_INIT(queue.head), \98 }99 100#ifdef __cplusplus101}102#endif103#endif // !Py_INTERNAL_PYMEM_INIT_H104 