Lines Matching refs:size

156 #define ZEND_MM_ALIGNED_OFFSET(size, alignment) \  argument
157 (((size_t)(size)) & ((alignment) - 1))
158 #define ZEND_MM_ALIGNED_BASE(size, alignment) \ argument
159 (((size_t)(size)) & ~((alignment) - 1))
160 #define ZEND_MM_SIZE_TO_NUM(size, alignment) \ argument
161 (((size_t)(size) + ((alignment) - 1)) / (alignment))
245 size_t size; /* current memory usage */ member
311 size_t size; member
321 #define _BIN_DATA_SIZE(num, size, elements, pages, x, y) size, argument
326 #define _BIN_DATA_ELEMENTS(num, size, elements, pages, x, y) elements, argument
331 #define _BIN_DATA_PAGES(num, size, elements, pages, x, y) pages, argument
374 size_t size) in zend_mm_safe_error() argument
386 size); in zend_mm_safe_error()
415 static void zend_mm_munmap(void *addr, size_t size) in zend_mm_munmap() argument
444 if (munmap(addr, size) != 0) { in zend_mm_munmap()
453 static void *zend_mm_mmap_fixed(void *addr, size_t size) in zend_mm_mmap_fixed() argument
456 void *ptr = VirtualAlloc(addr, size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); in zend_mm_mmap_fixed()
478 …void *ptr = mmap(addr, size, PROT_READ | PROT_WRITE, flags /*| MAP_POPULATE | MAP_HUGETLB*/, ZEND_… in zend_mm_mmap_fixed()
486 zend_mm_munmap(ptr, size); in zend_mm_mmap_fixed()
494 static void *zend_mm_mmap(size_t size) in zend_mm_mmap() argument
497 void *ptr = VirtualAlloc(NULL, size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); in zend_mm_mmap()
510 if (zend_mm_use_huge_pages && size == ZEND_MM_CHUNK_SIZE) { in zend_mm_mmap()
518 ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, mflags, fd, 0); in zend_mm_mmap()
520 zend_mmap_set_name(ptr, size, "zend_alloc"); in zend_mm_mmap()
526 ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, ZEND_MM_FD, 0); in zend_mm_mmap()
534 zend_mmap_set_name(ptr, size, "zend_alloc"); in zend_mm_mmap()
701 static zend_always_inline void zend_mm_hugepage(void* ptr, size_t size) argument
704 (void)madvise(ptr, size, MADV_HUGEPAGE);
707 (void)memcntl(ptr, size, MC_HAT_ADVISE, (char *)&m, 0, 0);
713 static void *zend_mm_chunk_alloc_int(size_t size, size_t alignment) argument
715 void *ptr = zend_mm_mmap(size);
721 zend_mm_hugepage(ptr, size);
724 ASAN_UNPOISON_MEMORY_REGION(ptr, size);
731 zend_mm_munmap(ptr, size);
732 ptr = zend_mm_mmap(size + alignment - REAL_PAGE_SIZE);
738 zend_mm_munmap(ptr, size + alignment - REAL_PAGE_SIZE);
739 ptr = zend_mm_mmap_fixed((void*)((char*)ptr + offset), size);
741 ptr = zend_mm_mmap(size + alignment - REAL_PAGE_SIZE);
760 zend_mm_munmap((char*)ptr + size, alignment - REAL_PAGE_SIZE);
763 zend_mm_hugepage(ptr, size);
766 ASAN_UNPOISON_MEMORY_REGION(ptr, size);
773 static void *zend_mm_chunk_alloc(zend_mm_heap *heap, size_t size, size_t alignment) argument
777 void *ptr = heap->storage->handlers.chunk_alloc(heap->storage, size, alignment);
782 return zend_mm_chunk_alloc_int(size, alignment);
785 static void zend_mm_chunk_free(zend_mm_heap *heap, void *addr, size_t size) argument
789 heap->storage->handlers.chunk_free(heap->storage, addr, size);
793 zend_mm_munmap(addr, size);
864 static void *zend_mm_alloc_huge(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_OR…
868 static void zend_mm_change_huge_block_size(zend_mm_heap *heap, void *ptr, size_t size, size_t dbg_s…
870 static void zend_mm_change_huge_block_size(zend_mm_heap *heap, void *ptr, size_t size ZEND_FILE_LIN…
878 static void *zend_mm_alloc_pages(zend_mm_heap *heap, uint32_t pages_count, size_t size ZEND_FILE_LI…
1015 …austed at %s:%d (tried to allocate %zu bytes)", heap->limit, __zend_filename, __zend_lineno, size);
1033 …s) at %s:%d (tried to allocate %zu bytes)", heap->real_size, __zend_filename, __zend_lineno, size);
1042 size_t size = heap->real_size + ZEND_MM_CHUNK_SIZE; local
1043 size_t peak = MAX(heap->real_peak, size);
1044 heap->real_size = size;
1089 static zend_always_inline void *zend_mm_alloc_large_ex(zend_mm_heap *heap, size_t size ZEND_FILE_LI…
1091 int pages_count = (int)ZEND_MM_SIZE_TO_NUM(size, ZEND_MM_PAGE_SIZE);
1093 …void *ptr = zend_mm_alloc_pages(heap, pages_count, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORI…
1099 size_t size = heap->size + pages_count * ZEND_MM_PAGE_SIZE; local
1100 size_t peak = MAX(heap->peak, size);
1101 heap->size = size;
1109 static zend_never_inline void *zend_mm_alloc_large(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_D…
1111 return zend_mm_alloc_large_ex(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
1114 static zend_never_inline void *zend_mm_alloc_large(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_D…
1116 return zend_mm_alloc_large_ex(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
1180 heap->size -= pages_count * ZEND_MM_PAGE_SIZE;
1190 static zend_always_inline int zend_mm_small_size_to_bit(int size) argument
1193 return (__builtin_clz(size) ^ 0x1f) + 1;
1197 if (!BitScanReverse(&index, (unsigned long)size)) {
1205 if (size <= 0x00ff) {n -= 8; size = size << 8;}
1206 if (size <= 0x0fff) {n -= 4; size = size << 4;}
1207 if (size <= 0x3fff) {n -= 2; size = size << 2;}
1208 if (size <= 0x7fff) {n -= 1;}
1221 static zend_always_inline int zend_mm_small_size_to_bin(size_t size) argument
1229 if (UNEXPECTED(size <= 2)) return 0;
1230 n = zend_mm_small_size_to_bit(size - 1);
1231 return ((size-1) >> f1[n]) + f2[n];
1235 if (size <= 64) {
1237 return (size - !!size) >> 3;
1239 t1 = size - 1;
1249 #define ZEND_MM_SMALL_SIZE_TO_BIN(size) zend_mm_small_size_to_bin(size) argument
1288 dbg->size = 0;
1299 dbg->size = 0;
1311 size_t size = heap->size + bin_data_size[bin_num]; local
1312 size_t peak = MAX(heap->peak, size);
1313 heap->size = size;
1332 heap->size -= bin_data_size[bin_num];
1338 dbg->size = 0;
1375 static zend_always_inline void *zend_mm_alloc_heap(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_D…
1379 size_t real_size = size;
1383 size = MAX(size, 1);
1384 size = ZEND_MM_ALIGNED_SIZE(size) + ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info));
1385 if (UNEXPECTED(size < real_size)) {
1390 if (EXPECTED(size <= ZEND_MM_MAX_SMALL_SIZE)) {
1391 …ptr = zend_mm_alloc_small(heap, ZEND_MM_SMALL_SIZE_TO_BIN(size) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_…
1394 dbg->size = real_size;
1401 } else if (EXPECTED(size <= ZEND_MM_MAX_LARGE_SIZE)) {
1402 ptr = zend_mm_alloc_large(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
1405 dbg->size = real_size;
1414 size = real_size;
1416 return zend_mm_alloc_huge(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
1455 return dbg->size;
1473 static zend_never_inline void *zend_mm_realloc_slow(zend_mm_heap *heap, void *ptr, size_t size, siz… argument
1481 ret = zend_mm_alloc_heap(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
1485 heap->peak = MAX(orig_peak, heap->size);
1491 static zend_never_inline void *zend_mm_realloc_huge(zend_mm_heap *heap, void *ptr, size_t size, siz… argument
1501 real_size = size;
1502 size = ZEND_MM_ALIGNED_SIZE(size) + ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info));
1504 if (size > ZEND_MM_MAX_LARGE_SIZE) {
1506 size = real_size;
1513 new_size = ZEND_MM_ALIGNED_SIZE_EX(size, MAX(REAL_PAGE_SIZE, ZEND_MM_CHUNK_SIZE));
1515 new_size = ZEND_MM_ALIGNED_SIZE_EX(size, REAL_PAGE_SIZE);
1531 heap->size -= old_size - new_size;
1547 …austed at %s:%d (tried to allocate %zu bytes)", heap->limit, __zend_filename, __zend_lineno, size);
1549 …ap, "Allowed memory size of %zu bytes exhausted (tried to allocate %zu bytes)", heap->limit, size);
1562 heap->size += new_size - old_size;
1563 heap->peak = MAX(heap->peak, heap->size);
1575 …return zend_mm_realloc_slow(heap, ptr, size, MIN(old_size, copy_size) ZEND_FILE_LINE_RELAY_CC ZEND…
1578 static zend_always_inline void *zend_mm_realloc_heap(zend_mm_heap *heap, void *ptr, size_t size, bo… argument
1591 return _zend_mm_alloc(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
1593 …return zend_mm_realloc_huge(heap, ptr, size, copy_size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG…
1600 size_t real_size = size;
1602 size = ZEND_MM_ALIGNED_SIZE(size) + ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info));
1613 if (size <= old_size) {
1615 if (old_bin_num > 0 && size < bin_data_size[old_bin_num - 1]) {
1617 …ret = zend_mm_alloc_small(heap, ZEND_MM_SMALL_SIZE_TO_BIN(size) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_…
1618 copy_size = use_copy_size ? MIN(size, copy_size) : size;
1625 } else if (size <= ZEND_MM_MAX_SMALL_SIZE) {
1632 …ret = zend_mm_alloc_small(heap, ZEND_MM_SMALL_SIZE_TO_BIN(size) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_…
1637 heap->peak = MAX(orig_peak, heap->size);
1647 dbg->size = real_size;
1659 if (size > ZEND_MM_MAX_SMALL_SIZE && size <= ZEND_MM_MAX_LARGE_SIZE) {
1660 new_size = ZEND_MM_ALIGNED_SIZE_EX(size, ZEND_MM_PAGE_SIZE);
1664 dbg->size = real_size;
1677 heap->size -= rest_pages_count * ZEND_MM_PAGE_SIZE;
1684 dbg->size = real_size;
1700 size_t size = heap->size + (new_size - old_size); local
1701 size_t peak = MAX(heap->peak, size);
1702 heap->size = size;
1711 dbg->size = real_size;
1723 size = real_size;
1728 …return zend_mm_realloc_slow(heap, ptr, size, copy_size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG…
1736 static void zend_mm_add_huge_block(zend_mm_heap *heap, void *ptr, size_t size, size_t dbg_size ZEND… argument
1738 static void zend_mm_add_huge_block(zend_mm_heap *heap, void *ptr, size_t size ZEND_FILE_LINE_DC ZEN…
1743 list->size = size;
1746 list->dbg.size = dbg_size;
1761 size_t size; local
1768 size = list->size;
1770 return size;
1784 return list->size;
1793 static void zend_mm_change_huge_block_size(zend_mm_heap *heap, void *ptr, size_t size, size_t dbg_s… argument
1795 static void zend_mm_change_huge_block_size(zend_mm_heap *heap, void *ptr, size_t size ZEND_FILE_LIN…
1801 list->size = size;
1803 list->dbg.size = dbg_size;
1815 static void *zend_mm_alloc_huge(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_OR…
1826 size_t new_size = ZEND_MM_ALIGNED_SIZE_EX(size, alignment);
1829 if (UNEXPECTED(new_size < size)) {
1830 …zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu + %zu)", size, a…
1839 …austed at %s:%d (tried to allocate %zu bytes)", heap->limit, __zend_filename, __zend_lineno, size);
1841 …ap, "Allowed memory size of %zu bytes exhausted (tried to allocate %zu bytes)", heap->limit, size);
1857 …s) at %s:%d (tried to allocate %zu bytes)", heap->real_size, __zend_filename, __zend_lineno, size);
1859 …(heap, "Out of memory (allocated %zu bytes) (tried to allocate %zu bytes)", heap->real_size, size);
1865 …zend_mm_add_huge_block(heap, ptr, new_size, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY…
1871 size_t size = heap->real_size + new_size; local
1872 size_t peak = MAX(heap->real_peak, size);
1873 heap->real_size = size;
1877 size_t size = heap->size + new_size; local
1878 size_t peak = MAX(heap->peak, size);
1879 heap->size = size;
1890 size_t size; local
1893 size = zend_mm_del_huge_block(heap, ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
1894 zend_mm_chunk_free(heap, ptr, size);
1896 heap->real_size -= size;
1899 heap->size -= size;
1940 heap->size = 0;
2084 if (dbg->size != 0) {
2087 dbg->size = 0;
2143 zend_mm_chunk_free(heap, p->ptr, p->size);
2170 leak.size = list->dbg.size;
2185 zend_mm_chunk_free(heap, q->ptr, q->size);
2201 if (dbg->size != 0) {
2203 leak.size = dbg->size;
2212 dbg->size = 0;
2232 leak.size = dbg->size;
2263 static void *tracked_malloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC);
2285 heap->size = 0;
2310 zend_mm_chunk_free(heap, q->ptr, q->size);
2362 heap->size = heap->peak = 0;
2386 ZEND_API void* ZEND_FASTCALL _zend_mm_alloc(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_DC ZEND_…
2388 return zend_mm_alloc_heap(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
2396 void* ZEND_FASTCALL _zend_mm_realloc(zend_mm_heap *heap, void *ptr, size_t size ZEND_FILE_LINE_DC Z…
2398 …return zend_mm_realloc_heap(heap, ptr, size, 0, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_R…
2401 void* ZEND_FASTCALL _zend_mm_realloc2(zend_mm_heap *heap, void *ptr, size_t size, size_t copy_size … argument
2403 …return zend_mm_realloc_heap(heap, ptr, size, 1, copy_size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_O…
2481 && ptr < (void*)((char*)block + block->size)) {
2494 # define ZEND_MM_CUSTOM_ALLOCATOR(size) do { \ argument
2496 …return AG(mm_heap)->custom_heap._malloc(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC)…
2506 # define ZEND_MM_CUSTOM_ALLOCATOR(size) argument
2518 ZEND_API void* ZEND_FASTCALL _emalloc_large(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
2520 ZEND_MM_CUSTOM_ALLOCATOR(size);
2521 …return zend_mm_alloc_large_ex(AG(mm_heap), size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_…
2524 ZEND_API void* ZEND_FASTCALL _emalloc_huge(size_t size) argument
2526 ZEND_MM_CUSTOM_ALLOCATOR(size);
2527 return zend_mm_alloc_huge(AG(mm_heap), size);
2558 ZEND_API void ZEND_FASTCALL _efree_large(void *ptr, size_t size)
2565 uint32_t pages_count = ZEND_MM_ALIGNED_SIZE_EX(size, ZEND_MM_PAGE_SIZE) / ZEND_MM_PAGE_SIZE;
2574 ZEND_API void ZEND_FASTCALL _efree_huge(void *ptr, size_t size) argument
2582 ZEND_API void* ZEND_FASTCALL _emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
2586 …return AG(mm_heap)->custom_heap._malloc(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC)…
2589 return zend_mm_alloc_heap(AG(mm_heap), size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
2603 ZEND_API void* ZEND_FASTCALL _erealloc(void *ptr, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG…
2607 …return AG(mm_heap)->custom_heap._realloc(ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_REL…
2610 …return zend_mm_realloc_heap(AG(mm_heap), ptr, size, 0, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE…
2613 ZEND_API void* ZEND_FASTCALL _erealloc2(void *ptr, size_t size, size_t copy_size ZEND_FILE_LINE_DC … argument
2617 …return AG(mm_heap)->custom_heap._realloc(ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_REL…
2620 …return zend_mm_realloc_heap(AG(mm_heap), ptr, size, 1, copy_size ZEND_FILE_LINE_RELAY_CC ZEND_FILE…
2628 ZEND_API void* ZEND_FASTCALL _safe_emalloc(size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_… argument
2630 …return _emalloc(zend_safe_address_guarded(nmemb, size, offset) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_L…
2633 ZEND_API void* ZEND_FASTCALL _safe_malloc(size_t nmemb, size_t size, size_t offset) argument
2635 return pemalloc(zend_safe_address_guarded(nmemb, size, offset), 1);
2638 ZEND_API void* ZEND_FASTCALL _safe_erealloc(void *ptr, size_t nmemb, size_t size, size_t offset ZEN… argument
2640 …return _erealloc(ptr, zend_safe_address_guarded(nmemb, size, offset) ZEND_FILE_LINE_RELAY_CC ZEND_…
2643 ZEND_API void* ZEND_FASTCALL _safe_realloc(void *ptr, size_t nmemb, size_t size, size_t offset) argument
2645 return perealloc(ptr, zend_safe_address_guarded(nmemb, size, offset), 1);
2648 ZEND_API void* ZEND_FASTCALL _ecalloc(size_t nmemb, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_OR…
2652 size = zend_safe_address_guarded(nmemb, size, 0);
2653 p = _emalloc(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
2654 memset(p, 0, size);
2744 size_t usage = AG(mm_heap)->size;
2767 AG(mm_heap)->peak = AG(mm_heap)->size;
2783 static zend_always_inline void tracked_add(zend_mm_heap *heap, void *ptr, size_t size) { argument
2787 ZVAL_LONG(&size_zv, size);
2799 if (add_size > heap->limit - heap->size && !heap->overflow) {
2812 static void *tracked_malloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
2815 tracked_check_limit(heap, size);
2817 void *ptr = malloc(size);
2822 tracked_add(heap, ptr, size);
2823 heap->size += size;
2834 heap->size -= Z_LVAL_P(size_zv);
2859 heap->size += new_size - old_size;
3052 heap->size = 0;