Lines Matching refs:arena

36 	zend_arena *arena = (zend_arena*)emalloc(size);  in zend_arena_create()  local
38 arena->ptr = (char*) arena + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena)); in zend_arena_create()
39 arena->end = (char*) arena + size; in zend_arena_create()
40 arena->prev = NULL; in zend_arena_create()
41 return arena; in zend_arena_create()
44 static zend_always_inline void zend_arena_destroy(zend_arena *arena) in zend_arena_destroy() argument
47 zend_arena *prev = arena->prev; in zend_arena_destroy()
48 efree(arena); in zend_arena_destroy()
49 arena = prev; in zend_arena_destroy()
50 } while (arena); in zend_arena_destroy()
55 zend_arena *arena = *arena_ptr; in zend_arena_alloc() local
56 char *ptr = arena->ptr; in zend_arena_alloc()
60 if (EXPECTED(size <= (size_t)(arena->end - ptr))) { in zend_arena_alloc()
61 arena->ptr = ptr + size; in zend_arena_alloc()
64 …XPECTED((size + ZEND_MM_ALIGNED_SIZE(sizeof(zend_arena))) > (size_t)(arena->end - (char*) arena)) ? in zend_arena_alloc()
66 (size_t)(arena->end - (char*) arena); in zend_arena_alloc()
72 new_arena->prev = arena; in zend_arena_alloc()
94 static zend_always_inline void* zend_arena_checkpoint(zend_arena *arena) in zend_arena_checkpoint() argument
96 return arena->ptr; in zend_arena_checkpoint()
101 zend_arena *arena = *arena_ptr; in zend_arena_release() local
103 while (UNEXPECTED((char*)checkpoint > arena->end) || in zend_arena_release()
104 UNEXPECTED((char*)checkpoint <= (char*)arena)) { in zend_arena_release()
105 zend_arena *prev = arena->prev; in zend_arena_release()
106 efree(arena); in zend_arena_release()
107 *arena_ptr = arena = prev; in zend_arena_release()
109 ZEND_ASSERT((char*)checkpoint > (char*)arena && (char*)checkpoint <= arena->end); in zend_arena_release()
110 arena->ptr = (char*)checkpoint; in zend_arena_release()
113 static zend_always_inline bool zend_arena_contains(zend_arena *arena, void *ptr) in zend_arena_contains() argument
115 while (arena) { in zend_arena_contains()
116 if ((char*)ptr > (char*)arena && (char*)ptr <= arena->ptr) { in zend_arena_contains()
119 arena = arena->prev; in zend_arena_contains()
142 zend_arena *arena = (zend_arena*) emalloc( in zend_arena_create() local
144 arena->ptr = &arena->ptrs[0]; in zend_arena_create()
145 arena->end = &arena->ptrs[ZEND_TRACKED_ARENA_SIZE]; in zend_arena_create()
146 arena->prev = NULL; in zend_arena_create()
147 return arena; in zend_arena_create()
150 static zend_always_inline void zend_arena_destroy(zend_arena *arena) in zend_arena_destroy() argument
153 zend_arena *prev = arena->prev; in zend_arena_destroy()
155 for (ptr = arena->ptrs; ptr < arena->ptr; ptr++) { in zend_arena_destroy()
158 efree(arena); in zend_arena_destroy()
159 arena = prev; in zend_arena_destroy()
160 } while (arena); in zend_arena_destroy()
165 zend_arena *arena = *arena_ptr; in zend_arena_alloc() local
166 if (arena->ptr == arena->end) { in zend_arena_alloc()
168 (*arena_ptr)->prev = arena; in zend_arena_alloc()
169 arena = *arena_ptr; in zend_arena_alloc()
172 return *arena->ptr++ = emalloc(size); in zend_arena_alloc()
190 static zend_always_inline void* zend_arena_checkpoint(zend_arena *arena) in zend_arena_checkpoint() argument
192 return arena->ptr; in zend_arena_checkpoint()
198 zend_arena *arena = *arena_ptr; in zend_arena_release() local
199 zend_arena *prev = arena->prev; in zend_arena_release()
201 if (arena->ptr == (void **) checkpoint) { in zend_arena_release()
204 if (arena->ptr == arena->ptrs) { in zend_arena_release()
207 arena->ptr--; in zend_arena_release()
208 efree(*arena->ptr); in zend_arena_release()
210 efree(arena); in zend_arena_release()
216 static zend_always_inline bool zend_arena_contains(zend_arena *arena, void *ptr) in zend_arena_contains() argument