mirror of
https://github.com/python/cpython.git
synced 2024-11-24 17:47:13 +01:00
7a7bce5a0a
For interpreters that share state with the main interpreter, this points to the same static memory structure. For interpreters with their own obmalloc state, it is heap allocated. Add free_obmalloc_arenas() which will free the obmalloc arenas and radix tree structures for interpreters with their own obmalloc state. Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
67 lines
1.9 KiB
C
67 lines
1.9 KiB
C
#ifndef Py_INTERNAL_OBMALLOC_INIT_H
|
|
#define Py_INTERNAL_OBMALLOC_INIT_H
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef Py_BUILD_CORE
|
|
# error "this header requires Py_BUILD_CORE define"
|
|
#endif
|
|
|
|
|
|
/****************************************************/
|
|
/* the default object allocator's state initializer */
|
|
|
|
#define PTA(pools, x) \
|
|
((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
|
|
#define PT(p, x) PTA(p, x), PTA(p, x)
|
|
|
|
#define PT_8(p, start) \
|
|
PT(p, start), \
|
|
PT(p, start+1), \
|
|
PT(p, start+2), \
|
|
PT(p, start+3), \
|
|
PT(p, start+4), \
|
|
PT(p, start+5), \
|
|
PT(p, start+6), \
|
|
PT(p, start+7)
|
|
|
|
#if NB_SMALL_SIZE_CLASSES <= 8
|
|
# define _obmalloc_pools_INIT(p) \
|
|
{ PT_8(p, 0) }
|
|
#elif NB_SMALL_SIZE_CLASSES <= 16
|
|
# define _obmalloc_pools_INIT(p) \
|
|
{ PT_8(p, 0), PT_8(p, 8) }
|
|
#elif NB_SMALL_SIZE_CLASSES <= 24
|
|
# define _obmalloc_pools_INIT(p) \
|
|
{ PT_8(p, 0), PT_8(p, 8), PT_8(p, 16) }
|
|
#elif NB_SMALL_SIZE_CLASSES <= 32
|
|
# define _obmalloc_pools_INIT(p) \
|
|
{ PT_8(p, 0), PT_8(p, 8), PT_8(p, 16), PT_8(p, 24) }
|
|
#elif NB_SMALL_SIZE_CLASSES <= 40
|
|
# define _obmalloc_pools_INIT(p) \
|
|
{ PT_8(p, 0), PT_8(p, 8), PT_8(p, 16), PT_8(p, 24), PT_8(p, 32) }
|
|
#elif NB_SMALL_SIZE_CLASSES <= 48
|
|
# define _obmalloc_pools_INIT(p) \
|
|
{ PT_8(p, 0), PT_8(p, 8), PT_8(p, 16), PT_8(p, 24), PT_8(p, 32), PT_8(p, 40) }
|
|
#elif NB_SMALL_SIZE_CLASSES <= 56
|
|
# define _obmalloc_pools_INIT(p) \
|
|
{ PT_8(p, 0), PT_8(p, 8), PT_8(p, 16), PT_8(p, 24), PT_8(p, 32), PT_8(p, 40), PT_8(p, 48) }
|
|
#elif NB_SMALL_SIZE_CLASSES <= 64
|
|
# define _obmalloc_pools_INIT(p) \
|
|
{ PT_8(p, 0), PT_8(p, 8), PT_8(p, 16), PT_8(p, 24), PT_8(p, 32), PT_8(p, 40), PT_8(p, 48), PT_8(p, 56) }
|
|
#else
|
|
# error "NB_SMALL_SIZE_CLASSES should be less than 64"
|
|
#endif
|
|
|
|
#define _obmalloc_global_state_INIT \
|
|
{ \
|
|
.dump_debug_stats = -1, \
|
|
}
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif // !Py_INTERNAL_OBMALLOC_INIT_H
|