Lines Matching refs:chunk

318 #define ZEND_MM_PAGE_ADDR(chunk, page_num) \  argument
319 ((void*)(((zend_mm_page*)(chunk)) + (page_num)))
842 static zend_always_inline void zend_mm_chunk_init(zend_mm_heap *heap, zend_mm_chunk *chunk) argument
844 chunk->heap = heap;
845 chunk->next = heap->main_chunk;
846 chunk->prev = heap->main_chunk->prev;
847 chunk->prev->next = chunk;
848 chunk->next->prev = chunk;
850 chunk->free_pages = ZEND_MM_PAGES - ZEND_MM_FIRST_PAGE;
851 chunk->free_tail = ZEND_MM_FIRST_PAGE;
853 chunk->num = chunk->prev->num + 1;
855 chunk->free_map[0] = (1L << ZEND_MM_FIRST_PAGE) - 1;
856 chunk->map[0] = ZEND_MM_LRUN(ZEND_MM_FIRST_PAGE);
883 zend_mm_chunk *chunk = heap->main_chunk; local
888 if (UNEXPECTED(chunk->free_pages < pages_count)) {
891 } else if (UNEXPECTED(chunk->free_pages + chunk->free_tail == ZEND_MM_PAGES)) {
892 if (UNEXPECTED(ZEND_MM_PAGES - chunk->free_tail < pages_count)) {
895 page_num = chunk->free_tail;
900 int free_tail = chunk->free_tail;
901 zend_mm_bitset *bitset = chunk->free_map;
942 uint32_t free_tail = chunk->free_tail;
943 zend_mm_bitset *bitset = chunk->free_map;
971 chunk->free_tail = page_num + pages_count;
975 chunk->free_tail = page_num;
1002 if (chunk->next == heap->main_chunk) {
1006 chunk = heap->cached_chunks;
1007 heap->cached_chunks = chunk->next;
1023 chunk = (zend_mm_chunk*)zend_mm_chunk_alloc(heap, ZEND_MM_CHUNK_SIZE, ZEND_MM_CHUNK_SIZE);
1024 if (UNEXPECTED(chunk == NULL)) {
1027 …(chunk = (zend_mm_chunk*)zend_mm_chunk_alloc(heap, ZEND_MM_CHUNK_SIZE, ZEND_MM_CHUNK_SIZE)) != NUL…
1056 zend_mm_chunk_init(heap, chunk);
1061 chunk = chunk->next;
1068 ZEND_MM_CHECK(chunk->next->prev == chunk, "zend_mm_heap corrupted");
1069 ZEND_MM_CHECK(chunk->prev->next == chunk, "zend_mm_heap corrupted");
1072 chunk->prev->next = chunk->next;
1073 chunk->next->prev = chunk->prev;
1074 chunk->next = heap->main_chunk->next;
1075 chunk->prev = heap->main_chunk;
1076 chunk->prev->next = chunk;
1077 chunk->next->prev = chunk;
1080 chunk->free_pages -= pages_count;
1081 zend_mm_bitset_set_range(chunk->free_map, page_num, pages_count);
1082 chunk->map[page_num] = ZEND_MM_LRUN(pages_count);
1083 if (page_num == chunk->free_tail) {
1084 chunk->free_tail = page_num + pages_count;
1086 return ZEND_MM_PAGE_ADDR(chunk, page_num);
1120 static zend_always_inline void zend_mm_delete_chunk(zend_mm_heap *heap, zend_mm_chunk *chunk) argument
1122 ZEND_MM_CHECK(chunk->next->prev == chunk, "zend_mm_heap corrupted");
1123 ZEND_MM_CHECK(chunk->prev->next == chunk, "zend_mm_heap corrupted");
1125 chunk->next->prev = chunk->prev;
1126 chunk->prev->next = chunk->next;
1133 chunk->next = heap->cached_chunks;
1134 heap->cached_chunks = chunk;
1147 if (!heap->cached_chunks || chunk->num > heap->cached_chunks->num) {
1148 zend_mm_chunk_free(heap, chunk, ZEND_MM_CHUNK_SIZE);
1151 chunk->next = heap->cached_chunks->next;
1153 heap->cached_chunks = chunk;
1158 static zend_always_inline void zend_mm_free_pages_ex(zend_mm_heap *heap, zend_mm_chunk *chunk, uint… argument
1160 chunk->free_pages += pages_count;
1161 zend_mm_bitset_reset_range(chunk->free_map, page_num, pages_count);
1162 chunk->map[page_num] = 0;
1163 if (chunk->free_tail == page_num + pages_count) {
1165 chunk->free_tail = page_num;
1167 …if (free_chunk && chunk != heap->main_chunk && chunk->free_pages == ZEND_MM_PAGES - ZEND_MM_FIRST_…
1168 zend_mm_delete_chunk(heap, chunk);
1172 static zend_never_inline void zend_mm_free_pages(zend_mm_heap *heap, zend_mm_chunk *chunk, int page… argument
1174 zend_mm_free_pages_ex(heap, chunk, page_num, pages_count, 1);
1177 static zend_always_inline void zend_mm_free_large(zend_mm_heap *heap, zend_mm_chunk *chunk, int pag… argument
1182 zend_mm_free_pages(heap, chunk, page_num, pages_count);
1253 zend_mm_chunk *chunk; local
1268 chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(bin, ZEND_MM_CHUNK_SIZE);
1270 chunk->map[page_num] = ZEND_MM_SRUN(bin_num);
1275 chunk->map[page_num+i] = ZEND_MM_NRUN(bin_num, i);
1355 zend_mm_chunk *chunk; local
1360 chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(ptr, ZEND_MM_CHUNK_SIZE);
1362 info = chunk->map[page_num];
1363 ZEND_MM_CHECK(chunk->heap == heap, "zend_mm_heap corrupted");
1429 zend_mm_chunk *chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(ptr, ZEND_MM_CHUNK_SIZE); local
1431 zend_mm_page_info info = chunk->map[page_num];
1433 ZEND_MM_CHECK(chunk->heap == heap, "zend_mm_heap corrupted");
1440 zend_mm_free_large(heap, chunk, page_num, pages_count);
1452 zend_mm_chunk *chunk; local
1460 chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(ptr, ZEND_MM_CHUNK_SIZE);
1462 info = chunk->map[page_num];
1463 ZEND_MM_CHECK(chunk->heap == heap, "zend_mm_heap corrupted");
1596 zend_mm_chunk *chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(ptr, ZEND_MM_CHUNK_SIZE); local
1598 zend_mm_page_info info = chunk->map[page_num];
1605 ZEND_MM_CHECK(chunk->heap == heap, "zend_mm_heap corrupted");
1679 chunk->map[page_num] = ZEND_MM_LRUN(new_pages_count);
1680 chunk->free_pages += rest_pages_count;
1681 zend_mm_bitset_reset_range(chunk->free_map, page_num + new_pages_count, rest_pages_count);
1697 …zend_mm_bitset_is_free_range(chunk->free_map, page_num + old_pages_count, new_pages_count - old_pa…
1706 chunk->free_pages -= new_pages_count - old_pages_count;
1707 …zend_mm_bitset_set_range(chunk->free_map, page_num + old_pages_count, new_pages_count - old_pages_…
1708 chunk->map[page_num] = ZEND_MM_LRUN(new_pages_count);
1909 …zend_mm_chunk *chunk = (zend_mm_chunk*)zend_mm_chunk_alloc_int(ZEND_MM_CHUNK_SIZE, ZEND_MM_CHUNK_S… local
1912 if (UNEXPECTED(chunk == NULL)) {
1918 heap = &chunk->heap_slot;
1919 chunk->heap = heap;
1920 chunk->next = chunk;
1921 chunk->prev = chunk;
1922 chunk->free_pages = ZEND_MM_PAGES - ZEND_MM_FIRST_PAGE;
1923 chunk->free_tail = ZEND_MM_FIRST_PAGE;
1924 chunk->num = 0;
1925 chunk->free_map[0] = (Z_L(1) << ZEND_MM_FIRST_PAGE) - 1;
1926 chunk->map[0] = ZEND_MM_LRUN(ZEND_MM_FIRST_PAGE);
1927 heap->main_chunk = chunk;
1960 zend_mm_chunk *chunk; local
1978 chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(p, ZEND_MM_CHUNK_SIZE);
1979 ZEND_MM_CHECK(chunk->heap == heap, "zend_mm_heap corrupted");
1983 info = chunk->map[page_num];
1987 info = chunk->map[page_num];
1996 chunk->map[page_num] = ZEND_MM_SRUN_EX(i, free_counter);
2007 chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(p, ZEND_MM_CHUNK_SIZE);
2008 ZEND_MM_CHECK(chunk->heap == heap, "zend_mm_heap corrupted");
2012 info = chunk->map[page_num];
2016 info = chunk->map[page_num];
2032 chunk = heap->main_chunk;
2035 while (i < chunk->free_tail) {
2036 if (zend_mm_bitset_is_set(chunk->free_map, i)) {
2037 info = chunk->map[i];
2044 zend_mm_free_pages_ex(heap, chunk, i, pages_count, 0);
2048 chunk->map[i] = ZEND_MM_SRUN(bin_num);
2058 if (chunk->free_pages == ZEND_MM_PAGES - ZEND_MM_FIRST_PAGE) {
2059 zend_mm_chunk *next_chunk = chunk->next;
2061 zend_mm_delete_chunk(heap, chunk);
2062 chunk = next_chunk;
2064 chunk = chunk->next;
2066 } while (chunk != heap->main_chunk);
2465 zend_mm_chunk *chunk = AG(mm_heap)->main_chunk; local
2468 if (ptr >= (void*)chunk
2469 && ptr < (void*)((char*)chunk + ZEND_MM_CHUNK_SIZE)) {
2472 chunk = chunk->next;
2473 } while (chunk != AG(mm_heap)->main_chunk);
2536 zend_mm_chunk *chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(ptr, ZEND_MM_CHUNK_SIZE); \
2538 ZEND_MM_CHECK(chunk->heap == AG(mm_heap), "zend_mm_heap corrupted"); \
2539 ZEND_ASSERT(chunk->map[page_num] & ZEND_MM_IS_SRUN); \
2540 ZEND_ASSERT(ZEND_MM_SRUN_BIN_NUM(chunk->map[page_num]) == _num); \
2549 zend_mm_chunk *chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(ptr, ZEND_MM_CHUNK_SIZE); \
2550 ZEND_MM_CHECK(chunk->heap == AG(mm_heap), "zend_mm_heap corrupted"); \
2563 zend_mm_chunk *chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(ptr, ZEND_MM_CHUNK_SIZE); local
2567 …ZEND_MM_CHECK(chunk->heap == AG(mm_heap) && ZEND_MM_ALIGNED_OFFSET(page_offset, ZEND_MM_PAGE_SIZE)…
2568 ZEND_ASSERT(chunk->map[page_num] & ZEND_MM_IS_LRUN);
2569 ZEND_ASSERT(ZEND_MM_LRUN_PAGES(chunk->map[page_num]) == pages_count);
2570 zend_mm_free_large(AG(mm_heap), chunk, page_num, pages_count);
3018 zend_mm_chunk *chunk; local
3023chunk = (zend_mm_chunk*)handlers->chunk_alloc(&tmp_storage, ZEND_MM_CHUNK_SIZE, ZEND_MM_CHUNK_SIZE…
3024 if (UNEXPECTED(chunk == NULL)) {
3030 heap = &chunk->heap_slot;
3031 chunk->heap = heap;
3032 chunk->next = chunk;
3033 chunk->prev = chunk;
3034 chunk->free_pages = ZEND_MM_PAGES - ZEND_MM_FIRST_PAGE;
3035 chunk->free_tail = ZEND_MM_FIRST_PAGE;
3036 chunk->num = 0;
3037 chunk->free_map[0] = (Z_L(1) << ZEND_MM_FIRST_PAGE) - 1;
3038 chunk->map[0] = ZEND_MM_LRUN(ZEND_MM_FIRST_PAGE);
3039 heap->main_chunk = chunk;
3067 handlers->chunk_free(&tmp_storage, chunk, ZEND_MM_CHUNK_SIZE);