|
30 | 30 | //# define ZEND_MAP_PTR_KIND ZEND_MAP_PTR_KIND_PTR
|
31 | 31 | //#endif
|
32 | 32 |
|
33 |
| -#if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR |
34 |
| -# define ZEND_MAP_PTR(ptr) \ |
| 33 | +#define ZEND_MAP_PTR(ptr) \ |
35 | 34 | ptr ## __ptr
|
36 |
| -# define ZEND_MAP_PTR_DEF(type, name) \ |
| 35 | +#define ZEND_MAP_PTR_DEF(type, name) \ |
37 | 36 | type * ZEND_MAP_PTR(name)
|
| 37 | +#define ZEND_MAP_PTR_OFFSET2PTR(offset) \ |
| 38 | + ((void**)((char*)CG(map_ptr_base) + offset)) |
| 39 | +#define ZEND_MAP_PTR_PTR2OFFSET(ptr) \ |
| 40 | + ((void*)(((char*)(ptr)) - ((char*)CG(map_ptr_base)))) |
| 41 | +#define ZEND_MAP_PTR_INIT(ptr, val) do { \ |
| 42 | + ZEND_MAP_PTR(ptr) = (val); \ |
| 43 | + } while (0) |
| 44 | +#define ZEND_MAP_PTR_NEW(ptr) do { \ |
| 45 | + ZEND_MAP_PTR(ptr) = zend_map_ptr_new(); \ |
| 46 | + } while (0) |
| 47 | + |
| 48 | +#if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR |
| 49 | +# define ZEND_MAP_PTR_NEW_OFFSET() \ |
| 50 | + ((uint32_t)(uintptr_t)ZEND_MAP_PTR_PTR2OFFSET(zend_map_ptr_new())) |
38 | 51 | # define ZEND_MAP_PTR_GET(ptr) \
|
39 | 52 | (*(ZEND_MAP_PTR(ptr)))
|
40 | 53 | # define ZEND_MAP_PTR_GET_IMM(ptr) \
|
|
44 | 57 | } while (0)
|
45 | 58 | # define ZEND_MAP_PTR_SET_IMM(ptr, val) \
|
46 | 59 | ZEND_MAP_PTR_SET(ptr, val)
|
47 |
| -# define ZEND_MAP_PTR_INIT(ptr, val) do { \ |
48 |
| - ZEND_MAP_PTR(ptr) = (val); \ |
49 |
| - } while (0) |
50 |
| -# define ZEND_MAP_PTR_NEW(ptr) do { \ |
51 |
| - ZEND_MAP_PTR(ptr) = zend_map_ptr_new(); \ |
52 |
| - } while (0) |
53 | 60 | # define ZEND_MAP_PTR_REAL_BASE(base) \
|
54 | 61 | (base)
|
55 | 62 | # define ZEND_MAP_PTR_SET_REAL_BASE(base, ptr) do { \
|
56 | 63 | base = (ptr); \
|
57 | 64 | } while (0)
|
58 |
| -# define ZEND_MAP_PTR_OFFSET2PTR(offset) \ |
59 |
| - ((void**)((char*)CG(map_ptr_base) + offset)) |
60 | 65 | #elif ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR_OR_OFFSET
|
61 |
| -# define ZEND_MAP_PTR(ptr) \ |
62 |
| - ptr ## __ptr |
63 |
| -# define ZEND_MAP_PTR_DEF(type, name) \ |
64 |
| - type * ZEND_MAP_PTR(name) |
| 66 | +# define ZEND_MAP_PTR_NEW_OFFSET() \ |
| 67 | + ((uint32_t)(uintptr_t)zend_map_ptr_new()) |
65 | 68 | # define ZEND_MAP_PTR_IS_OFFSET(ptr) \
|
66 | 69 | (((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
|
67 |
| -# define ZEND_MAP_PTR_OFFSET2PTR(offset) \ |
68 |
| - ((void**)((char*)CG(map_ptr_base) + offset)) |
69 |
| -# define ZEND_MAP_PTR_PTR2OFFSET(ptr) \ |
70 |
| - ((void*)(((char*)(ptr)) - ((char*)CG(map_ptr_base)))) |
71 | 70 | # define ZEND_MAP_PTR_GET(ptr) \
|
72 | 71 | (*(ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
|
73 | 72 | ZEND_MAP_PTR_OFFSET2PTR((uintptr_t)ZEND_MAP_PTR(ptr)) : \
|
|
85 | 84 | void **__p = ZEND_MAP_PTR_OFFSET2PTR((uintptr_t)ZEND_MAP_PTR(ptr)); \
|
86 | 85 | *__p = (val); \
|
87 | 86 | } while (0)
|
88 |
| -# define ZEND_MAP_PTR_INIT(ptr, val) do { \ |
89 |
| - ZEND_MAP_PTR(ptr) = (val); \ |
90 |
| - } while (0) |
91 |
| -# define ZEND_MAP_PTR_NEW(ptr) do { \ |
92 |
| - ZEND_MAP_PTR(ptr) = zend_map_ptr_new(); \ |
93 |
| - } while (0) |
94 | 87 | # define ZEND_MAP_PTR_REAL_BASE(base) \
|
95 | 88 | ((void*)(((uintptr_t)(base)) + 1))
|
96 | 89 | # define ZEND_MAP_PTR_SET_REAL_BASE(base, ptr) do { \
|
|
0 commit comments