/* }}} */
-/* {{{ mysqlnd_mempool_resize_chunk */
-static void *
-mysqlnd_mempool_resize_chunk(MYSQLND_MEMORY_POOL * pool, void * ptr, size_t old_size, size_t size)
-{
- DBG_ENTER("mysqlnd_mempool_resize_chunk");
-
-#ifndef ZEND_TRACK_ARENA_ALLOC
- /* Try to back-off and guess if this is the last block allocated */
- if (ptr == pool->last
- && (ZEND_MM_ALIGNED_SIZE(size) <= ((char*)pool->arena->end - (char*)ptr))) {
- /*
- This was the last allocation. Lucky us, we can free
- a bit of memory from the pool. Next time we will return from the same ptr.
- */
- pool->arena->ptr = (char*)ptr + ZEND_MM_ALIGNED_SIZE(size);
- DBG_RETURN(ptr);
- }
-#endif
-
- void *new_ptr = zend_arena_alloc(&pool->arena, size);
- memcpy(new_ptr, ptr, MIN(old_size, size));
- pool->last = ptr = new_ptr;
- DBG_RETURN(ptr);
-}
-/* }}} */
-
-
/* {{{ mysqlnd_mempool_get_chunk */
static void *
mysqlnd_mempool_get_chunk(MYSQLND_MEMORY_POOL * pool, size_t size)
ret->checkpoint = NULL;
ret->get_chunk = mysqlnd_mempool_get_chunk;
ret->free_chunk = mysqlnd_mempool_free_chunk;
- ret->resize_chunk = mysqlnd_mempool_resize_chunk;
DBG_RETURN(ret);
}
/* }}} */
void *checkpoint;
void* (*get_chunk)(MYSQLND_MEMORY_POOL * pool, size_t size);
- void* (*resize_chunk)(MYSQLND_MEMORY_POOL * pool, void * ptr, size_t old_size, size_t size);
void (*free_chunk)(MYSQLND_MEMORY_POOL * pool, void * ptr);
};