heap 237 Zend/zend_alloc.c HANDLE heap = HeapCreate(HEAP_NO_SERIALIZE, 0, 0); heap 240 Zend/zend_alloc.c if (heap == NULL) { heap 245 Zend/zend_alloc.c HeapDestroy(heap); heap 248 Zend/zend_alloc.c storage->data = (void*) heap; heap 320 Zend/zend_alloc.c # define ZEND_MM_STORAGE_DTOR() heap->storage->handlers->dtor(heap->storage) heap 321 Zend/zend_alloc.c # define ZEND_MM_STORAGE_ALLOC(size) heap->storage->handlers->_alloc(heap->storage, size) heap 322 Zend/zend_alloc.c # define ZEND_MM_STORAGE_REALLOC(ptr, size) heap->storage->handlers->_realloc(heap->storage, ptr, size) heap 323 Zend/zend_alloc.c # define ZEND_MM_STORAGE_FREE(ptr) heap->storage->handlers->_free(heap->storage, ptr) heap 453 Zend/zend_alloc.c #define ZEND_MM_SMALL_FREE_BUCKET(heap, index) \ heap 454 Zend/zend_alloc.c (zend_mm_free_block*) ((char*)&heap->free_buckets[index * 2] + \ heap 458 Zend/zend_alloc.c #define ZEND_MM_REST_BUCKET(heap) \ heap 459 Zend/zend_alloc.c (zend_mm_free_block*)((char*)&heap->rest_buckets[0] + \ heap 563 Zend/zend_alloc.c zend_mm_check_ptr(heap, block, 1 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC) heap 661 Zend/zend_alloc.c static void *_zend_mm_alloc_int(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC ZEND_ATTRIBUTE_ALLOC_SIZE(2); heap 662 Zend/zend_alloc.c static void _zend_mm_free_int(zend_mm_heap *heap, void *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); heap 663 Zend/zend_alloc.c static void *_zend_mm_realloc_int(zend_mm_heap *heap, void *p, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_ALLOC_SIZE(3); heap 727 Zend/zend_alloc.c static inline void zend_mm_add_to_free_list(zend_mm_heap *heap, zend_mm_free_block *mm_block) heap 739 Zend/zend_alloc.c p = &heap->large_free_buckets[index]; heap 745 Zend/zend_alloc.c heap->large_free_bitmap |= (ZEND_MM_LONG_CONST(1) << index); heap 776 Zend/zend_alloc.c prev = ZEND_MM_SMALL_FREE_BUCKET(heap, index); heap 778 Zend/zend_alloc.c heap->free_bitmap |= (ZEND_MM_LONG_CONST(1) << index); heap 788 Zend/zend_alloc.c static inline void zend_mm_remove_from_free_list(zend_mm_heap *heap, zend_mm_free_block *mm_block) heap 811 Zend/zend_alloc.c if (mm_block->parent == &heap->large_free_buckets[index]) { heap 812 Zend/zend_alloc.c heap->large_free_bitmap &= ~(ZEND_MM_LONG_CONST(1) << index); heap 849 Zend/zend_alloc.c if (EXPECTED(heap->free_buckets[index*2] == heap->free_buckets[index*2+1])) { heap 850 Zend/zend_alloc.c heap->free_bitmap &= ~(ZEND_MM_LONG_CONST(1) << index); heap 854 Zend/zend_alloc.c heap->rest_count--; heap 861 Zend/zend_alloc.c static inline void zend_mm_add_to_rest_list(zend_mm_heap *heap, zend_mm_free_block *mm_block) heap 865 Zend/zend_alloc.c while (heap->rest_count >= ZEND_MM_MAX_REST_BLOCKS) { heap 866 Zend/zend_alloc.c zend_mm_free_block *p = heap->rest_buckets[1]; heap 869 Zend/zend_alloc.c heap->rest_count--; heap 875 Zend/zend_alloc.c zend_mm_add_to_free_list(heap, p); heap 880 Zend/zend_alloc.c heap->rest_count++; heap 885 Zend/zend_alloc.c prev = heap->rest_buckets[0]; heap 892 Zend/zend_alloc.c static inline void zend_mm_init(zend_mm_heap *heap) heap 897 Zend/zend_alloc.c heap->free_bitmap = 0; heap 898 Zend/zend_alloc.c heap->large_free_bitmap = 0; heap 900 Zend/zend_alloc.c heap->cached = 0; heap 901 Zend/zend_alloc.c memset(heap->cache, 0, sizeof(heap->cache)); heap 905 Zend/zend_alloc.c heap->cache_stat[i].count = 0; heap 908 Zend/zend_alloc.c p = ZEND_MM_SMALL_FREE_BUCKET(heap, 0); heap 913 Zend/zend_alloc.c heap->large_free_buckets[i] = NULL; heap 915 Zend/zend_alloc.c heap->rest_buckets[0] = heap->rest_buckets[1] = ZEND_MM_REST_BUCKET(heap); heap 916 Zend/zend_alloc.c heap->rest_count = 0; heap 919 Zend/zend_alloc.c static void zend_mm_del_segment(zend_mm_heap *heap, zend_mm_segment *segment) heap 921 Zend/zend_alloc.c zend_mm_segment **p = &heap->segments_list; heap 927 Zend/zend_alloc.c heap->real_size -= segment->size; heap 932 Zend/zend_alloc.c static void zend_mm_free_cache(zend_mm_heap *heap) heap 937 Zend/zend_alloc.c if (heap->cache[i]) { heap 938 Zend/zend_alloc.c zend_mm_free_block *mm_block = heap->cache[i]; heap 945 Zend/zend_alloc.c heap->cached -= size; heap 950 Zend/zend_alloc.c zend_mm_remove_from_free_list(heap, (zend_mm_free_block *) mm_block); heap 954 Zend/zend_alloc.c zend_mm_remove_from_free_list(heap, (zend_mm_free_block *) next_block); heap 960 Zend/zend_alloc.c zend_mm_del_segment(heap, (zend_mm_segment *) ((char *)mm_block - ZEND_MM_ALIGNED_SEGMENT_SIZE)); heap 962 Zend/zend_alloc.c zend_mm_add_to_free_list(heap, (zend_mm_free_block *) mm_block); heap 967 Zend/zend_alloc.c heap->cache[i] = NULL; heap 969 Zend/zend_alloc.c heap->cache_stat[i].count = 0; heap 1045 Zend/zend_alloc.c zend_mm_heap *heap; heap 1098 Zend/zend_alloc.c heap = malloc(sizeof(struct _zend_mm_heap)); heap 1099 Zend/zend_alloc.c if (heap == NULL) { heap 1106 Zend/zend_alloc.c heap->storage = storage; heap 1107 Zend/zend_alloc.c heap->block_size = block_size; heap 1108 Zend/zend_alloc.c heap->compact_size = 0; heap 1109 Zend/zend_alloc.c heap->segments_list = NULL; heap 1110 Zend/zend_alloc.c zend_mm_init(heap); heap 1112 Zend/zend_alloc.c memset(heap->cache_stat, 0, sizeof(heap->cache_stat)); heap 1115 Zend/zend_alloc.c heap->use_zend_alloc = 1; heap 1116 Zend/zend_alloc.c heap->real_size = 0; heap 1117 Zend/zend_alloc.c heap->overflow = 0; heap 1118 Zend/zend_alloc.c heap->real_peak = 0; heap 1119 Zend/zend_alloc.c heap->limit = ZEND_MM_LONG_CONST(1)<<(ZEND_MM_NUM_BUCKETS-2); heap 1120 Zend/zend_alloc.c heap->size = 0; heap 1121 Zend/zend_alloc.c heap->peak = 0; heap 1122 Zend/zend_alloc.c heap->internal = internal; heap 1123 Zend/zend_alloc.c heap->reserve = NULL; heap 1124 Zend/zend_alloc.c heap->reserve_size = reserve_size; heap 1126 Zend/zend_alloc.c heap->reserve = _zend_mm_alloc_int(heap, reserve_size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); heap 1131 Zend/zend_alloc.c zend_mm_heap *mm_heap = _zend_mm_alloc_int(heap, sizeof(zend_mm_heap) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); heap 1133 Zend/zend_alloc.c *mm_heap = *heap; heap 1136 Zend/zend_alloc.c orig = ZEND_MM_SMALL_FREE_BUCKET(heap, 0); heap 1157 Zend/zend_alloc.c free(heap); heap 1158 Zend/zend_alloc.c heap = mm_heap; heap 1160 Zend/zend_alloc.c return heap; heap 1170 Zend/zend_alloc.c zend_mm_heap *heap; heap 1221 Zend/zend_alloc.c heap = zend_mm_startup_ex(handlers, seg_size, ZEND_MM_RESERVE_SIZE, 0, NULL); heap 1222 Zend/zend_alloc.c if (heap) { heap 1225 Zend/zend_alloc.c heap->compact_size = zend_atoi(tmp, 0); heap 1227 Zend/zend_alloc.c heap->compact_size = 2 * 1024 * 1024; heap 1230 Zend/zend_alloc.c return heap; heap 1275 Zend/zend_alloc.c static void zend_mm_check_leaks(zend_mm_heap *heap TSRMLS_DC) heap 1277 Zend/zend_alloc.c zend_mm_segment *segment = heap->segments_list; heap 1335 Zend/zend_alloc.c static int zend_mm_check_ptr(zend_mm_heap *heap, void *ptr, int silent ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) heap 1367 Zend/zend_alloc.c return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); heap 1379 Zend/zend_alloc.c return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); heap 1389 Zend/zend_alloc.c return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); heap 1398 Zend/zend_alloc.c return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); heap 1420 Zend/zend_alloc.c return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); heap 1431 Zend/zend_alloc.c return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); heap 1447 Zend/zend_alloc.c return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); heap 1455 Zend/zend_alloc.c return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); heap 1463 Zend/zend_alloc.c return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); heap 1472 Zend/zend_alloc.c return zend_mm_check_ptr(heap, ptr, 0 ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); heap 1559 Zend/zend_alloc.c static int zend_mm_check_heap(zend_mm_heap *heap, int silent ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) heap 1561 Zend/zend_alloc.c zend_mm_segment *segment = heap->segments_list; heap 1578 Zend/zend_alloc.c if (!zend_mm_check_ptr(heap, ZEND_MM_DATA_OF(p), (silent?2:3) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC)) { heap 1601 Zend/zend_alloc.c ZEND_API void zend_mm_shutdown(zend_mm_heap *heap, int full_shutdown, int silent TSRMLS_DC) heap 1608 Zend/zend_alloc.c if (!heap->use_zend_alloc) { heap 1610 Zend/zend_alloc.c free(heap); heap 1615 Zend/zend_alloc.c if (heap->reserve) { heap 1618 Zend/zend_alloc.c _zend_mm_free_int(heap, heap->reserve ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); heap 1621 Zend/zend_alloc.c heap->reserve = NULL; heap 1656 Zend/zend_alloc.c hit += heap->cache_stat[i].hit; heap 1657 Zend/zend_alloc.c miss += heap->cache_stat[i].miss; heap 1658 Zend/zend_alloc.c fprintf(f, "%2d %8d %8d %9d %8d %8d %8d\n", i, (int)min_size, (int)max_size, ZEND_MM_TRUE_SIZE(max_size), heap->cache_stat[i].max_count, heap->cache_stat[i].hit, heap->cache_stat[i].miss); heap 1664 Zend/zend_alloc.c fprintf(f, " %8d %8d\n", heap->cache_stat[ZEND_MM_NUM_BUCKETS].hit, heap->cache_stat[ZEND_MM_NUM_BUCKETS].miss); heap 1672 Zend/zend_alloc.c zend_mm_check_leaks(heap TSRMLS_CC); heap 1676 Zend/zend_alloc.c internal = heap->internal; heap 1677 Zend/zend_alloc.c storage = heap->storage; heap 1678 Zend/zend_alloc.c segment = heap->segments_list; heap 1685 Zend/zend_alloc.c heap->segments_list = NULL; heap 1688 Zend/zend_alloc.c free(heap); heap 1693 Zend/zend_alloc.c if (heap->reserve_size) { heap 1699 Zend/zend_alloc.c heap->segments_list = segment; heap 1707 Zend/zend_alloc.c heap->segments_list = NULL; heap 1712 Zend/zend_alloc.c if (heap->compact_size && heap 1713 Zend/zend_alloc.c heap->real_peak > heap->compact_size) { heap 1716 Zend/zend_alloc.c zend_mm_init(heap); heap 1717 Zend/zend_alloc.c if (heap->segments_list) { heap 1718 Zend/zend_alloc.c heap->real_size = heap->segments_list->size; heap 1719 Zend/zend_alloc.c heap->real_peak = heap->segments_list->size; heap 1721 Zend/zend_alloc.c heap->real_size = 0; heap 1722 Zend/zend_alloc.c heap->real_peak = 0; heap 1724 Zend/zend_alloc.c heap->size = 0; heap 1725 Zend/zend_alloc.c heap->peak = 0; heap 1726 Zend/zend_alloc.c if (heap->segments_list) { heap 1728 Zend/zend_alloc.c zend_mm_free_block *b = (zend_mm_free_block*)((char*)heap->segments_list + ZEND_MM_ALIGNED_SEGMENT_SIZE); heap 1729 Zend/zend_alloc.c size_t block_size = heap->segments_list->size - ZEND_MM_ALIGNED_SEGMENT_SIZE - ZEND_MM_ALIGNED_HEADER_SIZE; heap 1734 Zend/zend_alloc.c zend_mm_add_to_free_list(heap, b); heap 1736 Zend/zend_alloc.c if (heap->reserve_size) { heap 1737 Zend/zend_alloc.c heap->reserve = _zend_mm_alloc_int(heap, heap->reserve_size ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); heap 1739 Zend/zend_alloc.c heap->overflow = 0; heap 1743 Zend/zend_alloc.c static void zend_mm_safe_error(zend_mm_heap *heap, heap 1752 Zend/zend_alloc.c if (heap->reserve) { heap 1753 Zend/zend_alloc.c _zend_mm_free_int(heap, heap->reserve ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC); heap 1754 Zend/zend_alloc.c heap->reserve = NULL; heap 1756 Zend/zend_alloc.c if (heap->overflow == 0) { heap 1773 Zend/zend_alloc.c heap->overflow = 1; heap 1784 Zend/zend_alloc.c if (heap->overflow == 2) { heap 1802 Zend/zend_alloc.c heap->overflow = 2; heap 1807 Zend/zend_alloc.c static zend_mm_free_block *zend_mm_search_large_block(zend_mm_heap *heap, size_t true_size) heap 1811 Zend/zend_alloc.c size_t bitmap = heap->large_free_bitmap >> index; heap 1825 Zend/zend_alloc.c p = heap->large_free_buckets[index]; heap 1871 Zend/zend_alloc.c best_fit = p = heap->large_free_buckets[index + zend_mm_low_bit(bitmap)]; heap 1880 Zend/zend_alloc.c static void *_zend_mm_alloc_int(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) heap 1903 Zend/zend_alloc.c if (EXPECTED(heap->cache[index] != NULL)) { heap 1906 Zend/zend_alloc.c heap->cache_stat[index].count--; heap 1907 Zend/zend_alloc.c heap->cache_stat[index].hit++; heap 1909 Zend/zend_alloc.c best_fit = heap->cache[index]; heap 1910 Zend/zend_alloc.c heap->cache[index] = best_fit->prev_free_block; heap 1911 Zend/zend_alloc.c heap->cached -= true_size; heap 1918 Zend/zend_alloc.c heap->cache_stat[index].miss++; heap 1922 Zend/zend_alloc.c bitmap = heap->free_bitmap >> index; heap 1926 Zend/zend_alloc.c best_fit = heap->free_buckets[index*2]; heap 1928 Zend/zend_alloc.c heap->cache_stat[ZEND_MM_NUM_BUCKETS].hit++; heap 1935 Zend/zend_alloc.c heap->cache_stat[ZEND_MM_NUM_BUCKETS].miss++; heap 1938 Zend/zend_alloc.c best_fit = zend_mm_search_large_block(heap, true_size); heap 1940 Zend/zend_alloc.c if (!best_fit && heap->real_size >= heap->limit - heap->block_size) { heap 1941 Zend/zend_alloc.c zend_mm_free_block *p = heap->rest_buckets[0]; heap 1944 Zend/zend_alloc.c while (p != ZEND_MM_REST_BUCKET(heap)) { heap 1958 Zend/zend_alloc.c if (true_size > heap->block_size - (ZEND_MM_ALIGNED_SEGMENT_SIZE + ZEND_MM_ALIGNED_HEADER_SIZE)) { heap 1962 Zend/zend_alloc.c segment_size = (segment_size + (heap->block_size-1)) & ~(heap->block_size-1); heap 1965 Zend/zend_alloc.c segment_size = heap->block_size; heap 1969 Zend/zend_alloc.c heap->real_size + segment_size > heap->limit) { heap 1972 Zend/zend_alloc.c zend_mm_free_cache(heap); heap 1976 Zend/zend_alloc.c zend_mm_safe_error(heap, "Allowed memory size of %ld bytes exhausted at %s:%d (tried to allocate %lu bytes)", heap->limit, __zend_filename, __zend_lineno, size); heap 1978 Zend/zend_alloc.c zend_mm_safe_error(heap, "Allowed memory size of %ld bytes exhausted (tried to allocate %lu bytes)", heap->limit, size); heap 1987 Zend/zend_alloc.c zend_mm_free_cache(heap); heap 1992 Zend/zend_alloc.c zend_mm_safe_error(heap, "Out of memory (allocated %ld) at %s:%d (tried to allocate %lu bytes)", heap->real_size, __zend_filename, __zend_lineno, size); heap 1994 Zend/zend_alloc.c zend_mm_safe_error(heap, "Out of memory (allocated %ld) (tried to allocate %lu bytes)", heap->real_size, size); heap 1999 Zend/zend_alloc.c heap->real_size += segment_size; heap 2000 Zend/zend_alloc.c if (heap->real_size > heap->real_peak) { heap 2001 Zend/zend_alloc.c heap->real_peak = heap->real_size; heap 2005 Zend/zend_alloc.c segment->next_segment = heap->segments_list; heap 2006 Zend/zend_alloc.c heap->segments_list = segment; heap 2021 Zend/zend_alloc.c zend_mm_remove_from_free_list(heap, best_fit); heap 2041 Zend/zend_alloc.c zend_mm_add_to_free_list(heap, new_free_block); heap 2043 Zend/zend_alloc.c zend_mm_add_to_rest_list(heap, new_free_block); heap 2049 Zend/zend_alloc.c heap->size += true_size; heap 2050 Zend/zend_alloc.c if (heap->peak < heap->size) { heap 2051 Zend/zend_alloc.c heap->peak = heap->size; heap 2060 Zend/zend_alloc.c static void _zend_mm_free_int(zend_mm_heap *heap, void *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) heap 2083 Zend/zend_alloc.c if (EXPECTED(ZEND_MM_SMALL_SIZE(size)) && EXPECTED(heap->cached < ZEND_MM_CACHE_SIZE)) { heap 2085 Zend/zend_alloc.c zend_mm_free_block **cache = &heap->cache[index]; heap 2089 Zend/zend_alloc.c heap->cached += size; heap 2092 Zend/zend_alloc.c if (++heap->cache_stat[index].count > heap->cache_stat[index].max_count) { heap 2093 Zend/zend_alloc.c heap->cache_stat[index].max_count = heap->cache_stat[index].count; heap 2101 Zend/zend_alloc.c heap->size -= size; heap 2105 Zend/zend_alloc.c zend_mm_remove_from_free_list(heap, (zend_mm_free_block *) next_block); heap 2110 Zend/zend_alloc.c zend_mm_remove_from_free_list(heap, (zend_mm_free_block *) mm_block); heap 2115 Zend/zend_alloc.c zend_mm_del_segment(heap, (zend_mm_segment *) ((char *)mm_block - ZEND_MM_ALIGNED_SEGMENT_SIZE)); heap 2118 Zend/zend_alloc.c zend_mm_add_to_free_list(heap, (zend_mm_free_block *) mm_block); heap 2123 Zend/zend_alloc.c static void *_zend_mm_realloc_int(zend_mm_heap *heap, void *p, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) heap 2134 Zend/zend_alloc.c return _zend_mm_alloc_int(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); heap 2157 Zend/zend_alloc.c zend_mm_remove_from_free_list(heap, (zend_mm_free_block *) next_block); heap 2167 Zend/zend_alloc.c zend_mm_add_to_free_list(heap, new_free_block); heap 2168 Zend/zend_alloc.c heap->size += (true_size - orig_size); heap 2179 Zend/zend_alloc.c if (heap->cache[index] != NULL) { heap 2184 Zend/zend_alloc.c heap->cache_stat[index].count--; heap 2185 Zend/zend_alloc.c heap->cache_stat[index].hit++; heap 2187 Zend/zend_alloc.c best_fit = heap->cache[index]; heap 2188 Zend/zend_alloc.c heap->cache[index] = best_fit->prev_free_block; heap 2200 Zend/zend_alloc.c heap->cached -= true_size - orig_size; heap 2203 Zend/zend_alloc.c cache = &heap->cache[index]; heap 2209 Zend/zend_alloc.c if (++heap->cache_stat[index].count > heap->cache_stat[index].max_count) { heap 2210 Zend/zend_alloc.c heap->cache_stat[index].max_count = heap->cache_stat[index].count; heap 2229 Zend/zend_alloc.c zend_mm_remove_from_free_list(heap, (zend_mm_free_block *) next_block); heap 2245 Zend/zend_alloc.c zend_mm_add_to_rest_list(heap, new_free_block); heap 2247 Zend/zend_alloc.c zend_mm_add_to_free_list(heap, new_free_block); heap 2251 Zend/zend_alloc.c heap->size = heap->size + true_size - orig_size; heap 2252 Zend/zend_alloc.c if (heap->peak < heap->size) { heap 2253 Zend/zend_alloc.c heap->peak = heap->size; heap 2259 Zend/zend_alloc.c zend_mm_remove_from_free_list(heap, (zend_mm_free_block *) next_block); heap 2271 Zend/zend_alloc.c if (true_size > heap->block_size - (ZEND_MM_ALIGNED_SEGMENT_SIZE + ZEND_MM_ALIGNED_HEADER_SIZE)) { heap 2273 Zend/zend_alloc.c segment_size = (segment_size + (heap->block_size-1)) & ~(heap->block_size-1); heap 2275 Zend/zend_alloc.c segment_size = heap->block_size; heap 2280 Zend/zend_alloc.c heap->real_size + segment_size - segment_copy->size > heap->limit) { heap 2282 Zend/zend_alloc.c zend_mm_add_to_free_list(heap, (zend_mm_free_block *) next_block); heap 2285 Zend/zend_alloc.c zend_mm_free_cache(heap); heap 2289 Zend/zend_alloc.c zend_mm_safe_error(heap, "Allowed memory size of %ld bytes exhausted at %s:%d (tried to allocate %ld bytes)", heap->limit, __zend_filename, __zend_lineno, size); heap 2291 Zend/zend_alloc.c zend_mm_safe_error(heap, "Allowed memory size of %ld bytes exhausted (tried to allocate %ld bytes)", heap->limit, size); heap 2299 Zend/zend_alloc.c zend_mm_free_cache(heap); heap 2304 Zend/zend_alloc.c zend_mm_safe_error(heap, "Out of memory (allocated %ld) at %s:%d (tried to allocate %ld bytes)", heap->real_size, __zend_filename, __zend_lineno, size); heap 2306 Zend/zend_alloc.c zend_mm_safe_error(heap, "Out of memory (allocated %ld) (tried to allocate %ld bytes)", heap->real_size, size); heap 2310 Zend/zend_alloc.c heap->real_size += segment_size - segment->size; heap 2311 Zend/zend_alloc.c if (heap->real_size > heap->real_peak) { heap 2312 Zend/zend_alloc.c heap->real_peak = heap->real_size; heap 2318 Zend/zend_alloc.c zend_mm_segment **seg = &heap->segments_list; heap 2345 Zend/zend_alloc.c zend_mm_add_to_rest_list(heap, new_free_block); heap 2350 Zend/zend_alloc.c heap->size = heap->size + true_size - orig_size; heap 2351 Zend/zend_alloc.c if (heap->peak < heap->size) { heap 2352 Zend/zend_alloc.c heap->peak = heap->size; heap 2359 Zend/zend_alloc.c ptr = _zend_mm_alloc_int(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); heap 2365 Zend/zend_alloc.c _zend_mm_free_int(heap, p ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); heap 2370 Zend/zend_alloc.c ZEND_API void *_zend_mm_alloc(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) heap 2372 Zend/zend_alloc.c return _zend_mm_alloc_int(heap, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); heap 2375 Zend/zend_alloc.c ZEND_API void _zend_mm_free(zend_mm_heap *heap, void *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) heap 2377 Zend/zend_alloc.c _zend_mm_free_int(heap, p ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); heap 2380 Zend/zend_alloc.c ZEND_API void *_zend_mm_realloc(zend_mm_heap *heap, void *ptr, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) heap 2382 Zend/zend_alloc.c return _zend_mm_realloc_int(heap, ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); heap 2385 Zend/zend_alloc.c ZEND_API size_t _zend_mm_block_size(zend_mm_heap *heap, void *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) heap 2762 Zend/zend_alloc.c ZEND_API zend_mm_storage *zend_mm_get_storage(zend_mm_heap *heap) heap 2764 Zend/zend_alloc.c return heap->storage; heap 2767 Zend/zend_alloc.c ZEND_API void zend_mm_set_custom_handlers(zend_mm_heap *heap, heap 2772 Zend/zend_alloc.c heap->use_zend_alloc = 0; heap 2773 Zend/zend_alloc.c heap->_malloc = _malloc; heap 2774 Zend/zend_alloc.c heap->_free = _free; heap 2775 Zend/zend_alloc.c heap->_realloc = _realloc; heap 194 Zend/zend_alloc.h ZEND_API void zend_mm_shutdown(zend_mm_heap *heap, int full_shutdown, int silent TSRMLS_DC); heap 195 Zend/zend_alloc.h ZEND_API void *_zend_mm_alloc(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) ZEND_ATTRIBUTE_MALLOC; heap 196 Zend/zend_alloc.h ZEND_API void _zend_mm_free(zend_mm_heap *heap, void *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); heap 197 Zend/zend_alloc.h ZEND_API void *_zend_mm_realloc(zend_mm_heap *heap, void *p, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); heap 198 Zend/zend_alloc.h ZEND_API size_t _zend_mm_block_size(zend_mm_heap *heap, void *p ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); heap 200 Zend/zend_alloc.h #define zend_mm_alloc(heap, size) _zend_mm_alloc((heap), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) heap 201 Zend/zend_alloc.h #define zend_mm_free(heap, p) _zend_mm_free((heap), (p) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) heap 202 Zend/zend_alloc.h #define zend_mm_realloc(heap, p, size) _zend_mm_realloc((heap), (p), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) heap 203 Zend/zend_alloc.h #define zend_mm_block_size(heap, p) _zend_mm_block_size((heap), (p) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) heap 205 Zend/zend_alloc.h #define zend_mm_alloc_rel(heap, size) _zend_mm_alloc((heap), (size) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) heap 206 Zend/zend_alloc.h #define zend_mm_free_rel(heap, p) _zend_mm_free((heap), (p) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) heap 207 Zend/zend_alloc.h #define zend_mm_realloc_rel(heap, p, size) _zend_mm_realloc((heap), (p), (size) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) heap 208 Zend/zend_alloc.h #define zend_mm_block_size_rel(heap, p) _zend_mm_block_size((heap), (p) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) heap 235 Zend/zend_alloc.h ZEND_API zend_mm_storage *zend_mm_get_storage(zend_mm_heap *heap); heap 237 Zend/zend_alloc.h ZEND_API void zend_mm_set_custom_handlers(zend_mm_heap *heap, heap 73 ext/spl/spl_heap.c spl_ptr_heap *heap; heap 226 ext/spl/spl_heap.c spl_ptr_heap *heap = emalloc(sizeof(spl_ptr_heap)); heap 228 ext/spl/spl_heap.c heap->dtor = dtor; heap 229 ext/spl/spl_heap.c heap->ctor = ctor; heap 230 ext/spl/spl_heap.c heap->cmp = cmp; heap 231 ext/spl/spl_heap.c heap->elements = safe_emalloc(sizeof(spl_ptr_heap_element), PTR_HEAP_BLOCK_SIZE, 0); heap 232 ext/spl/spl_heap.c heap->max_size = PTR_HEAP_BLOCK_SIZE; heap 233 ext/spl/spl_heap.c heap->count = 0; heap 234 ext/spl/spl_heap.c heap->flags = 0; heap 236 ext/spl/spl_heap.c return heap; heap 240 ext/spl/spl_heap.c static void spl_ptr_heap_insert(spl_ptr_heap *heap, spl_ptr_heap_element elem, void *cmp_userdata TSRMLS_DC) { /* {{{ */ heap 243 ext/spl/spl_heap.c if (heap->count+1 > heap->max_size) { heap 245 ext/spl/spl_heap.c heap->elements = (void **) safe_erealloc(heap->elements, sizeof(spl_ptr_heap_element), (heap->max_size), (sizeof(spl_ptr_heap_element) * (heap->max_size))); heap 246 ext/spl/spl_heap.c heap->max_size *= 2; heap 249 ext/spl/spl_heap.c heap->ctor(elem TSRMLS_CC); heap 252 ext/spl/spl_heap.c for(i = heap->count; i > 0 && heap->cmp(heap->elements[(i-1)/2], elem, cmp_userdata TSRMLS_CC) < 0; i = (i-1)/2) { heap 253 ext/spl/spl_heap.c heap->elements[i] = heap->elements[(i-1)/2]; heap 255 ext/spl/spl_heap.c heap->count++; heap 259 ext/spl/spl_heap.c heap->flags |= SPL_HEAP_CORRUPTED; heap 262 ext/spl/spl_heap.c heap->elements[i] = elem; heap 267 ext/spl/spl_heap.c static spl_ptr_heap_element spl_ptr_heap_top(spl_ptr_heap *heap) { /* {{{ */ heap 268 ext/spl/spl_heap.c if (heap->count == 0) { heap 272 ext/spl/spl_heap.c return heap->elements[0]; heap 276 ext/spl/spl_heap.c static spl_ptr_heap_element spl_ptr_heap_delete_top(spl_ptr_heap *heap, void *cmp_userdata TSRMLS_DC) { /* {{{ */ heap 278 ext/spl/spl_heap.c const int limit = (heap->count-1)/2; heap 282 ext/spl/spl_heap.c if (heap->count == 0) { heap 286 ext/spl/spl_heap.c top = heap->elements[0]; heap 287 ext/spl/spl_heap.c bottom = heap->elements[--heap->count]; heap 293 ext/spl/spl_heap.c if(j != heap->count && heap->cmp(heap->elements[j+1], heap->elements[j], cmp_userdata TSRMLS_CC) > 0) { heap 298 ext/spl/spl_heap.c if(heap->cmp(bottom, heap->elements[j], cmp_userdata TSRMLS_CC) < 0) { heap 299 ext/spl/spl_heap.c heap->elements[i] = heap->elements[j]; heap 307 ext/spl/spl_heap.c heap->flags |= SPL_HEAP_CORRUPTED; heap 310 ext/spl/spl_heap.c heap->elements[i] = bottom; heap 311 ext/spl/spl_heap.c heap->dtor(top TSRMLS_CC); heap 319 ext/spl/spl_heap.c spl_ptr_heap *heap = emalloc(sizeof(spl_ptr_heap)); heap 321 ext/spl/spl_heap.c heap->dtor = from->dtor; heap 322 ext/spl/spl_heap.c heap->ctor = from->ctor; heap 323 ext/spl/spl_heap.c heap->cmp = from->cmp; heap 324 ext/spl/spl_heap.c heap->max_size = from->max_size; heap 325 ext/spl/spl_heap.c heap->count = from->count; heap 326 ext/spl/spl_heap.c heap->flags = from->flags; heap 328 ext/spl/spl_heap.c heap->elements = safe_emalloc(sizeof(spl_ptr_heap_element),from->max_size,0); heap 329 ext/spl/spl_heap.c memcpy(heap->elements, from->elements, sizeof(spl_ptr_heap_element)*from->max_size); heap 331 ext/spl/spl_heap.c for (i=0; i < heap->count; ++i) { heap 332 ext/spl/spl_heap.c heap->ctor(heap->elements[i] TSRMLS_CC); heap 335 ext/spl/spl_heap.c return heap; heap 339 ext/spl/spl_heap.c static void spl_ptr_heap_destroy(spl_ptr_heap *heap TSRMLS_DC) { /* {{{ */ heap 342 ext/spl/spl_heap.c for (i=0; i < heap->count; ++i) { heap 343 ext/spl/spl_heap.c heap->dtor(heap->elements[i] TSRMLS_CC); heap 346 ext/spl/spl_heap.c efree(heap->elements); heap 347 ext/spl/spl_heap.c efree(heap); heap 351 ext/spl/spl_heap.c static int spl_ptr_heap_count(spl_ptr_heap *heap) { /* {{{ */ heap 352 ext/spl/spl_heap.c return heap->count; heap 366 ext/spl/spl_heap.c for (i = 0; i < intern->heap->count; ++i) { heap 367 ext/spl/spl_heap.c if (intern->heap->elements[i]) { heap 368 ext/spl/spl_heap.c zval_ptr_dtor((zval **)&intern->heap->elements[i]); heap 372 ext/spl/spl_heap.c spl_ptr_heap_destroy(intern->heap TSRMLS_CC); heap 409 ext/spl/spl_heap.c intern->heap = spl_ptr_heap_clone(other->heap TSRMLS_CC); heap 410 ext/spl/spl_heap.c for (i = 0; i < intern->heap->count; ++i) { heap 411 ext/spl/spl_heap.c if (intern->heap->elements[i]) { heap 412 ext/spl/spl_heap.c Z_ADDREF_P((zval *)intern->heap->elements[i]); heap 416 ext/spl/spl_heap.c intern->heap = other->heap; heap 421 ext/spl/spl_heap.c intern->heap = spl_ptr_heap_init(spl_ptr_heap_zval_max_cmp, spl_ptr_heap_zval_ctor, spl_ptr_heap_zval_dtor); heap 428 ext/spl/spl_heap.c intern->heap->cmp = spl_ptr_pqueue_zval_cmp; heap 435 ext/spl/spl_heap.c intern->heap->cmp = spl_ptr_heap_zval_min_cmp; heap 440 ext/spl/spl_heap.c intern->heap->cmp = spl_ptr_heap_zval_max_cmp; heap 517 ext/spl/spl_heap.c *count = spl_ptr_heap_count(intern->heap); heap 552 ext/spl/spl_heap.c add_assoc_bool_ex(&zrv, pnstr, pnlen+1, intern->heap->flags&SPL_HEAP_CORRUPTED); heap 558 ext/spl/spl_heap.c for (i = 0; i < intern->heap->count; ++i) { heap 559 ext/spl/spl_heap.c add_index_zval(heap_array, i, (zval *)intern->heap->elements[i]); heap 560 ext/spl/spl_heap.c Z_ADDREF_P(intern->heap->elements[i]); heap 595 ext/spl/spl_heap.c count = spl_ptr_heap_count(intern->heap); heap 610 ext/spl/spl_heap.c RETURN_BOOL(spl_ptr_heap_count(intern->heap)==0); heap 627 ext/spl/spl_heap.c if (intern->heap->flags & SPL_HEAP_CORRUPTED) { heap 634 ext/spl/spl_heap.c spl_ptr_heap_insert(intern->heap, value, getThis() TSRMLS_CC); heap 653 ext/spl/spl_heap.c if (intern->heap->flags & SPL_HEAP_CORRUPTED) { heap 658 ext/spl/spl_heap.c value = (zval *)spl_ptr_heap_delete_top(intern->heap, getThis() TSRMLS_CC); heap 682 ext/spl/spl_heap.c if (intern->heap->flags & SPL_HEAP_CORRUPTED) { heap 696 ext/spl/spl_heap.c spl_ptr_heap_insert(intern->heap, elem, getThis() TSRMLS_CC); heap 715 ext/spl/spl_heap.c if (intern->heap->flags & SPL_HEAP_CORRUPTED) { heap 720 ext/spl/spl_heap.c value = (zval *)spl_ptr_heap_delete_top(intern->heap, getThis() TSRMLS_CC); heap 758 ext/spl/spl_heap.c if (intern->heap->flags & SPL_HEAP_CORRUPTED) { heap 763 ext/spl/spl_heap.c value = (zval *)spl_ptr_heap_top(intern->heap); heap 812 ext/spl/spl_heap.c intern->heap->flags = intern->heap->flags & ~SPL_HEAP_CORRUPTED; heap 845 ext/spl/spl_heap.c if (intern->heap->flags & SPL_HEAP_CORRUPTED) { heap 850 ext/spl/spl_heap.c value = (zval *)spl_ptr_heap_top(intern->heap); heap 910 ext/spl/spl_heap.c return (iterator->object->heap->count != 0 ? SUCCESS : FAILURE); heap 917 ext/spl/spl_heap.c zval **element = (zval **)&iterator->object->heap->elements[0]; heap 919 ext/spl/spl_heap.c if (iterator->object->heap->flags & SPL_HEAP_CORRUPTED) { heap 924 ext/spl/spl_heap.c if (iterator->object->heap->count == 0 || !*element) { heap 935 ext/spl/spl_heap.c zval **element = (zval **)&iterator->object->heap->elements[0]; heap 937 ext/spl/spl_heap.c if (iterator->object->heap->flags & SPL_HEAP_CORRUPTED) { heap 942 ext/spl/spl_heap.c if (iterator->object->heap->count == 0 || !*element) { heap 957 ext/spl/spl_heap.c ZVAL_LONG(key, iterator->object->heap->count - 1); heap 967 ext/spl/spl_heap.c if (iterator->object->heap->flags & SPL_HEAP_CORRUPTED) { heap 972 ext/spl/spl_heap.c elem = spl_ptr_heap_delete_top(iterator->object->heap, object TSRMLS_CC); heap 992 ext/spl/spl_heap.c RETURN_LONG(intern->heap->count - 1); heap 1001 ext/spl/spl_heap.c spl_ptr_heap_element elem = spl_ptr_heap_delete_top(intern->heap, getThis() TSRMLS_CC); heap 1023 ext/spl/spl_heap.c RETURN_BOOL(intern->heap->count != 0); heap 1043 ext/spl/spl_heap.c zval *element = (zval *)intern->heap->elements[0]; heap 1049 ext/spl/spl_heap.c if (!intern->heap->count || !element) { heap 1062 ext/spl/spl_heap.c zval **element = (zval **)&intern->heap->elements[0]; heap 1068 ext/spl/spl_heap.c if (!intern->heap->count || !*element) { heap 61665 ext/sqlite3/libsqlite/sqlite3.c u32 *heap = 0; heap 61811 ext/sqlite3/libsqlite/sqlite3.c heap = (u32*)sqlite3PageMalloc( pBt->pageSize ); heap 61813 ext/sqlite3/libsqlite/sqlite3.c if( heap==0 ){ heap 61818 ext/sqlite3/libsqlite/sqlite3.c heap[0] = 0; heap 61819 ext/sqlite3/libsqlite/sqlite3.c btreeHeapInsert(heap, contentOffset-1); heap 61839 ext/sqlite3/libsqlite/sqlite3.c btreeHeapInsert(heap, (pc<<16)|(pc+size-1)); heap 61851 ext/sqlite3/libsqlite/sqlite3.c btreeHeapInsert(heap, (i<<16)|(i+size-1)); heap 61864 ext/sqlite3/libsqlite/sqlite3.c assert( heap[0]>0 ); heap 61865 ext/sqlite3/libsqlite/sqlite3.c assert( (heap[1]>>16)==0 ); heap 61866 ext/sqlite3/libsqlite/sqlite3.c btreeHeapPull(heap,&prev); heap 61867 ext/sqlite3/libsqlite/sqlite3.c while( btreeHeapPull(heap,&x) ){ heap 61883 ext/sqlite3/libsqlite/sqlite3.c if( heap[0]==0 && cnt!=data[hdr+7] ){ heap 61889 ext/sqlite3/libsqlite/sqlite3.c sqlite3PageFree(heap); heap 151 sapi/cli/php_cli_server.c struct { void *block; char *p; size_t len; } heap; heap 982 sapi/cli/php_cli_server.c return chunk->data.heap.len; heap 993 sapi/cli/php_cli_server.c if (chunk->data.heap.block != chunk) { heap 994 sapi/cli/php_cli_server.c pefree(chunk->data.heap.block, 1); heap 1074 sapi/cli/php_cli_server.c chunk->data.heap.block = block; heap 1075 sapi/cli/php_cli_server.c chunk->data.heap.p = buf; heap 1076 sapi/cli/php_cli_server.c chunk->data.heap.len = len; heap 1089 sapi/cli/php_cli_server.c chunk->data.heap.block = chunk; heap 1090 sapi/cli/php_cli_server.c chunk->data.heap.p = (char *)(chunk + 1); heap 1091 sapi/cli/php_cli_server.c chunk->data.heap.len = len; heap 1116 sapi/cli/php_cli_server.c nbytes_sent = send(fd, chunk->data.heap.p, chunk->data.heap.len, 0); heap 1120 sapi/cli/php_cli_server.c } else if (nbytes_sent == chunk->data.heap.len) { heap 1128 sapi/cli/php_cli_server.c chunk->data.heap.p += nbytes_sent; heap 1129 sapi/cli/php_cli_server.c chunk->data.heap.len -= nbytes_sent; heap 1163 sapi/cli/php_cli_server.c _nbytes_read = read(fd, chunk->data.heap.p, chunk->data.heap.len); heap 1173 sapi/cli/php_cli_server.c chunk->data.heap.len = _nbytes_read; heap 1953 sapi/cli/php_cli_server.c snprintf(chunk->data.heap.p, chunk->data.heap.len, prologue_template, status, status_string, escaped_request_uri); heap 1954 sapi/cli/php_cli_server.c chunk->data.heap.len = strlen(chunk->data.heap.p); heap 1977 sapi/cli/php_cli_server.c snprintf(chunk->data.heap.p, chunk->data.heap.len, content_template, status_string, escaped_request_uri); heap 1978 sapi/cli/php_cli_server.c chunk->data.heap.len = strlen(chunk->data.heap.p); heap 33 sapi/phpdbg/phpdbg_win.h void phpdbg_win_set_mm_heap(zend_mm_heap *heap);