Lines Matching refs:chunk

320 #define ZEND_MM_PAGE_ADDR(chunk, page_num) \  argument
321 ((void*)(((zend_mm_page*)(chunk)) + (page_num)))
783 static zend_always_inline void zend_mm_chunk_init(zend_mm_heap *heap, zend_mm_chunk *chunk) argument
785 chunk->heap = heap;
786 chunk->next = heap->main_chunk;
787 chunk->prev = heap->main_chunk->prev;
788 chunk->prev->next = chunk;
789 chunk->next->prev = chunk;
791 chunk->free_pages = ZEND_MM_PAGES - ZEND_MM_FIRST_PAGE;
792 chunk->free_tail = ZEND_MM_FIRST_PAGE;
794 chunk->num = chunk->prev->num + 1;
796 chunk->free_map[0] = (1L << ZEND_MM_FIRST_PAGE) - 1;
797 chunk->map[0] = ZEND_MM_LRUN(ZEND_MM_FIRST_PAGE);
824 zend_mm_chunk *chunk = heap->main_chunk; local
829 if (UNEXPECTED(chunk->free_pages < pages_count)) {
832 } else if (UNEXPECTED(chunk->free_pages + chunk->free_tail == ZEND_MM_PAGES)) {
833 if (UNEXPECTED(ZEND_MM_PAGES - chunk->free_tail < pages_count)) {
836 page_num = chunk->free_tail;
841 int free_tail = chunk->free_tail;
842 zend_mm_bitset *bitset = chunk->free_map;
883 uint32_t free_tail = chunk->free_tail;
884 zend_mm_bitset *bitset = chunk->free_map;
912 chunk->free_tail = page_num + pages_count;
916 chunk->free_tail = page_num;
943 if (chunk->next == heap->main_chunk) {
947 chunk = heap->cached_chunks;
948 heap->cached_chunks = chunk->next;
964 chunk = (zend_mm_chunk*)zend_mm_chunk_alloc(heap, ZEND_MM_CHUNK_SIZE, ZEND_MM_CHUNK_SIZE);
965 if (UNEXPECTED(chunk == NULL)) {
968 …(chunk = (zend_mm_chunk*)zend_mm_chunk_alloc(heap, ZEND_MM_CHUNK_SIZE, ZEND_MM_CHUNK_SIZE)) != NUL…
997 zend_mm_chunk_init(heap, chunk);
1002 chunk = chunk->next;
1010 chunk->prev->next = chunk->next;
1011 chunk->next->prev = chunk->prev;
1012 chunk->next = heap->main_chunk->next;
1013 chunk->prev = heap->main_chunk;
1014 chunk->prev->next = chunk;
1015 chunk->next->prev = chunk;
1018 chunk->free_pages -= pages_count;
1019 zend_mm_bitset_set_range(chunk->free_map, page_num, pages_count);
1020 chunk->map[page_num] = ZEND_MM_LRUN(pages_count);
1021 if (page_num == chunk->free_tail) {
1022 chunk->free_tail = page_num + pages_count;
1024 return ZEND_MM_PAGE_ADDR(chunk, page_num);
1058 static zend_always_inline void zend_mm_delete_chunk(zend_mm_heap *heap, zend_mm_chunk *chunk) argument
1060 chunk->next->prev = chunk->prev;
1061 chunk->prev->next = chunk->next;
1068 chunk->next = heap->cached_chunks;
1069 heap->cached_chunks = chunk;
1082 if (!heap->cached_chunks || chunk->num > heap->cached_chunks->num) {
1083 zend_mm_chunk_free(heap, chunk, ZEND_MM_CHUNK_SIZE);
1086 chunk->next = heap->cached_chunks->next;
1088 heap->cached_chunks = chunk;
1093 static zend_always_inline void zend_mm_free_pages_ex(zend_mm_heap *heap, zend_mm_chunk *chunk, uint… argument
1095 chunk->free_pages += pages_count;
1096 zend_mm_bitset_reset_range(chunk->free_map, page_num, pages_count);
1097 chunk->map[page_num] = 0;
1098 if (chunk->free_tail == page_num + pages_count) {
1100 chunk->free_tail = page_num;
1102 …if (free_chunk && chunk != heap->main_chunk && chunk->free_pages == ZEND_MM_PAGES - ZEND_MM_FIRST_…
1103 zend_mm_delete_chunk(heap, chunk);
1107 static zend_never_inline void zend_mm_free_pages(zend_mm_heap *heap, zend_mm_chunk *chunk, int page… argument
1109 zend_mm_free_pages_ex(heap, chunk, page_num, pages_count, 1);
1112 static zend_always_inline void zend_mm_free_large(zend_mm_heap *heap, zend_mm_chunk *chunk, int pag… argument
1117 zend_mm_free_pages(heap, chunk, page_num, pages_count);
1188 zend_mm_chunk *chunk; local
1203 chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(bin, ZEND_MM_CHUNK_SIZE);
1205 chunk->map[page_num] = ZEND_MM_SRUN(bin_num);
1210 chunk->map[page_num+i] = ZEND_MM_NRUN(bin_num, i);
1290 zend_mm_chunk *chunk; local
1295 chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(ptr, ZEND_MM_CHUNK_SIZE);
1297 info = chunk->map[page_num];
1298 ZEND_MM_CHECK(chunk->heap == heap, "zend_mm_heap corrupted");
1364 zend_mm_chunk *chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(ptr, ZEND_MM_CHUNK_SIZE); local
1366 zend_mm_page_info info = chunk->map[page_num];
1368 ZEND_MM_CHECK(chunk->heap == heap, "zend_mm_heap corrupted");
1375 zend_mm_free_large(heap, chunk, page_num, pages_count);
1387 zend_mm_chunk *chunk; local
1395 chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(ptr, ZEND_MM_CHUNK_SIZE);
1397 info = chunk->map[page_num];
1398 ZEND_MM_CHECK(chunk->heap == heap, "zend_mm_heap corrupted");
1531 zend_mm_chunk *chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(ptr, ZEND_MM_CHUNK_SIZE); local
1533 zend_mm_page_info info = chunk->map[page_num];
1540 ZEND_MM_CHECK(chunk->heap == heap, "zend_mm_heap corrupted");
1614 chunk->map[page_num] = ZEND_MM_LRUN(new_pages_count);
1615 chunk->free_pages += rest_pages_count;
1616 zend_mm_bitset_reset_range(chunk->free_map, page_num + new_pages_count, rest_pages_count);
1632 …zend_mm_bitset_is_free_range(chunk->free_map, page_num + old_pages_count, new_pages_count - old_pa…
1641 chunk->free_pages -= new_pages_count - old_pages_count;
1642 …zend_mm_bitset_set_range(chunk->free_map, page_num + old_pages_count, new_pages_count - old_pages_…
1643 chunk->map[page_num] = ZEND_MM_LRUN(new_pages_count);
1844 …zend_mm_chunk *chunk = (zend_mm_chunk*)zend_mm_chunk_alloc_int(ZEND_MM_CHUNK_SIZE, ZEND_MM_CHUNK_S… local
1847 if (UNEXPECTED(chunk == NULL)) {
1857 heap = &chunk->heap_slot;
1858 chunk->heap = heap;
1859 chunk->next = chunk;
1860 chunk->prev = chunk;
1861 chunk->free_pages = ZEND_MM_PAGES - ZEND_MM_FIRST_PAGE;
1862 chunk->free_tail = ZEND_MM_FIRST_PAGE;
1863 chunk->num = 0;
1864 chunk->free_map[0] = (Z_L(1) << ZEND_MM_FIRST_PAGE) - 1;
1865 chunk->map[0] = ZEND_MM_LRUN(ZEND_MM_FIRST_PAGE);
1866 heap->main_chunk = chunk;
1899 zend_mm_chunk *chunk; local
1917 chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(p, ZEND_MM_CHUNK_SIZE);
1918 ZEND_MM_CHECK(chunk->heap == heap, "zend_mm_heap corrupted");
1922 info = chunk->map[page_num];
1926 info = chunk->map[page_num];
1935 chunk->map[page_num] = ZEND_MM_SRUN_EX(i, free_counter);
1946 chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(p, ZEND_MM_CHUNK_SIZE);
1947 ZEND_MM_CHECK(chunk->heap == heap, "zend_mm_heap corrupted");
1951 info = chunk->map[page_num];
1955 info = chunk->map[page_num];
1971 chunk = heap->main_chunk;
1974 while (i < chunk->free_tail) {
1975 if (zend_mm_bitset_is_set(chunk->free_map, i)) {
1976 info = chunk->map[i];
1983 zend_mm_free_pages_ex(heap, chunk, i, pages_count, 0);
1987 chunk->map[i] = ZEND_MM_SRUN(bin_num);
1997 if (chunk->free_pages == ZEND_MM_PAGES - ZEND_MM_FIRST_PAGE) {
1998 zend_mm_chunk *next_chunk = chunk->next;
2000 zend_mm_delete_chunk(heap, chunk);
2001 chunk = next_chunk;
2003 chunk = chunk->next;
2005 } while (chunk != heap->main_chunk);
2385 zend_mm_chunk *chunk = AG(mm_heap)->main_chunk; local
2388 if (ptr >= (void*)chunk
2389 && ptr < (void*)((char*)chunk + ZEND_MM_CHUNK_SIZE)) {
2392 chunk = chunk->next;
2393 } while (chunk != AG(mm_heap)->main_chunk);
2486 zend_mm_chunk *chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(ptr, ZEND_MM_CHUNK_SIZE); \
2488 ZEND_MM_CHECK(chunk->heap == AG(mm_heap), "zend_mm_heap corrupted"); \
2489 ZEND_ASSERT(chunk->map[page_num] & ZEND_MM_IS_SRUN); \
2490 ZEND_ASSERT(ZEND_MM_SRUN_BIN_NUM(chunk->map[page_num]) == _num); \
2499 zend_mm_chunk *chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(ptr, ZEND_MM_CHUNK_SIZE); \
2500 ZEND_MM_CHECK(chunk->heap == AG(mm_heap), "zend_mm_heap corrupted"); \
2513 zend_mm_chunk *chunk = (zend_mm_chunk*)ZEND_MM_ALIGNED_BASE(ptr, ZEND_MM_CHUNK_SIZE); local
2517 …ZEND_MM_CHECK(chunk->heap == AG(mm_heap) && ZEND_MM_ALIGNED_OFFSET(page_offset, ZEND_MM_PAGE_SIZE)…
2518 ZEND_ASSERT(chunk->map[page_num] & ZEND_MM_IS_LRUN);
2519 ZEND_ASSERT(ZEND_MM_LRUN_PAGES(chunk->map[page_num]) == pages_count);
2520 zend_mm_free_large(AG(mm_heap), chunk, page_num, pages_count);
2899 zend_mm_chunk *chunk; local
2904chunk = (zend_mm_chunk*)handlers->chunk_alloc(&tmp_storage, ZEND_MM_CHUNK_SIZE, ZEND_MM_CHUNK_SIZE…
2905 if (UNEXPECTED(chunk == NULL)) {
2915 heap = &chunk->heap_slot;
2916 chunk->heap = heap;
2917 chunk->next = chunk;
2918 chunk->prev = chunk;
2919 chunk->free_pages = ZEND_MM_PAGES - ZEND_MM_FIRST_PAGE;
2920 chunk->free_tail = ZEND_MM_FIRST_PAGE;
2921 chunk->num = 0;
2922 chunk->free_map[0] = (Z_L(1) << ZEND_MM_FIRST_PAGE) - 1;
2923 chunk->map[0] = ZEND_MM_LRUN(ZEND_MM_FIRST_PAGE);
2924 heap->main_chunk = chunk;
2952 handlers->chunk_free(&tmp_storage, chunk, ZEND_MM_CHUNK_SIZE);