File indexing completed on 2025-01-18 10:06:46
0001 #ifndef Py_INTERNAL_OBMALLOC_INIT_H
0002 #define Py_INTERNAL_OBMALLOC_INIT_H
0003 #ifdef __cplusplus
0004 extern "C" {
0005 #endif
0006
0007 #ifndef Py_BUILD_CORE
0008 # error "this header requires Py_BUILD_CORE define"
0009 #endif
0010
0011
0012
0013
0014
0015 #define PTA(pools, x) \
0016 ((poolp )((uint8_t *)&(pools.used[2*(x)]) - 2*sizeof(pymem_block *)))
0017 #define PT(p, x) PTA(p, x), PTA(p, x)
0018
0019 #define PT_8(p, start) \
0020 PT(p, start), \
0021 PT(p, start+1), \
0022 PT(p, start+2), \
0023 PT(p, start+3), \
0024 PT(p, start+4), \
0025 PT(p, start+5), \
0026 PT(p, start+6), \
0027 PT(p, start+7)
0028
0029 #if NB_SMALL_SIZE_CLASSES <= 8
0030 # define _obmalloc_pools_INIT(p) \
0031 { PT_8(p, 0) }
0032 #elif NB_SMALL_SIZE_CLASSES <= 16
0033 # define _obmalloc_pools_INIT(p) \
0034 { PT_8(p, 0), PT_8(p, 8) }
0035 #elif NB_SMALL_SIZE_CLASSES <= 24
0036 # define _obmalloc_pools_INIT(p) \
0037 { PT_8(p, 0), PT_8(p, 8), PT_8(p, 16) }
0038 #elif NB_SMALL_SIZE_CLASSES <= 32
0039 # define _obmalloc_pools_INIT(p) \
0040 { PT_8(p, 0), PT_8(p, 8), PT_8(p, 16), PT_8(p, 24) }
0041 #elif NB_SMALL_SIZE_CLASSES <= 40
0042 # define _obmalloc_pools_INIT(p) \
0043 { PT_8(p, 0), PT_8(p, 8), PT_8(p, 16), PT_8(p, 24), PT_8(p, 32) }
0044 #elif NB_SMALL_SIZE_CLASSES <= 48
0045 # define _obmalloc_pools_INIT(p) \
0046 { PT_8(p, 0), PT_8(p, 8), PT_8(p, 16), PT_8(p, 24), PT_8(p, 32), PT_8(p, 40) }
0047 #elif NB_SMALL_SIZE_CLASSES <= 56
0048 # define _obmalloc_pools_INIT(p) \
0049 { 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) }
0050 #elif NB_SMALL_SIZE_CLASSES <= 64
0051 # define _obmalloc_pools_INIT(p) \
0052 { 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) }
0053 #else
0054 # error "NB_SMALL_SIZE_CLASSES should be less than 64"
0055 #endif
0056
0057 #define _obmalloc_global_state_INIT \
0058 { \
0059 .dump_debug_stats = -1, \
0060 }
0061
0062 #define _obmalloc_state_INIT(obmalloc) \
0063 { \
0064 .pools = { \
0065 .used = _obmalloc_pools_INIT(obmalloc.pools), \
0066 }, \
0067 }
0068
0069
0070 #ifdef __cplusplus
0071 }
0072 #endif
0073 #endif