cvs: ZendEngine2(PHP_5_2) / zend_alloc.c php-src NEWS

From: Date: Fri, 10 Nov 2006 10:44:40 +0000
Subject: cvs: ZendEngine2(PHP_5_2) / zend_alloc.c php-src NEWS
Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-5378@lists.php.net to get a copy of this message
dmitry Fri Nov 10 10:44:40 2006 UTC Modified files: (Branch: PHP_5_2) /php-src NEWS /ZendEngine2 zend_alloc.c Log: Zend Memory Manager Improvements . use HeapAlloc() instead of VirtualAlloc() . use "win32" storage manager (instead of "malloc") on Windows by default http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.343&r2=1.2027.2.547.2.344&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.343 php-src/NEWS:1.2027.2.547.2.344 --- php-src/NEWS:1.2027.2.547.2.343 Thu Nov 9 19:10:13 2006 +++ php-src/NEWS Fri Nov 10 10:44:40 2006 @@ -1,6 +1,9 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? 2007, PHP 5.2.1 +- Zend Memory Manager Improvementds (Dmitry) + . use HeapAlloc() instead of VirtualAlloc() + . use "win32" storage manager (instead of "malloc") on Windows by default - Zip Extension Improvements (Pierre) . Fixed leak in statName and stateIndex . Fixed return setComment (Hannes) http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_alloc.c?r1=1.144.2.3.2.12&r2=1.144.2.3.2.13&diff_format=u Index: ZendEngine2/zend_alloc.c diff -u ZendEngine2/zend_alloc.c:1.144.2.3.2.12 ZendEngine2/zend_alloc.c:1.144.2.3.2.13 --- ZendEngine2/zend_alloc.c:1.144.2.3.2.12 Thu Oct 12 06:46:51 2006 +++ ZendEngine2/zend_alloc.c Fri Nov 10 10:44:40 2006 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_alloc.c,v 1.144.2.3.2.12 2006/10/12 06:46:51 dmitry Exp $ */ +/* $Id: zend_alloc.c,v 1.144.2.3.2.13 2006/11/10 10:44:40 dmitry Exp $ */ #include "zend.h" #include "zend_alloc.h" @@ -185,35 +185,41 @@ #ifdef HAVE_MEM_WIN32 +static zend_mm_storage* zend_mm_mem_win32_init(void *params) +{ + HANDLE heap = HeapCreate(HEAP_NO_SERIALIZE, 0, 0); + zend_mm_storage* storage; + + if (heap == NULL) { + return NULL; + } + storage = (zend_mm_storage*)malloc(sizeof(zend_mm_storage)); + storage->data = (void*) heap; + return storage; +} + +static void zend_mm_mem_win32_dtor(zend_mm_storage *storage) +{ + HeapDestroy((HANDLE)storage->data); + free(storage); +} + static zend_mm_segment* zend_mm_mem_win32_alloc(zend_mm_storage *storage, size_t size) { - return (zend_mm_segment*) VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE); + return (zend_mm_segment*) HeapAlloc((HANDLE)storage->data, HEAP_NO_SERIALIZE, size); } static void zend_mm_mem_win32_free(zend_mm_storage *storage, zend_mm_segment* segment) { - VirtualFree(segment, segment->size, MEM_RELEASE); + HeapFree((HANDLE)storage->data, HEAP_NO_SERIALIZE, segment); } static zend_mm_segment* zend_mm_mem_win32_realloc(zend_mm_storage *storage, zend_mm_segment* segment, size_t size) { - if (size < segment->size) { - VirtualFree((char*)segment + size, segment->size - size, MEM_RELEASE); - } else if (size > segment->size) { - if (!VirtualAlloc((char*)segment + segment->size, size - segment->size, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE)) { - zend_mm_segment *ret = zend_mm_mem_win32_alloc(storage, size); - - if (ret) { - memcpy(ret, segment, size > segment->size ? segment->size : size); - zend_mm_mem_win32_free(storage, segment); - } - segment = ret; - } - } - return segment; + return (zend_mm_segment*) HeapReAlloc((HANDLE)storage->data, HEAP_NO_SERIALIZE, segment, size); } -# define ZEND_MM_MEM_WIN32_DSC {"win32", zend_mm_mem_dummy_init, zend_mm_mem_dummy_dtor, zend_mm_mem_win32_alloc, zend_mm_mem_win32_realloc, zend_mm_mem_win32_free} +# define ZEND_MM_MEM_WIN32_DSC {"win32", zend_mm_mem_win32_init, zend_mm_mem_win32_dtor, zend_mm_mem_win32_alloc, zend_mm_mem_win32_realloc, zend_mm_mem_win32_free} #endif @@ -239,6 +245,9 @@ #endif static const zend_mm_mem_handlers mem_handlers[] = { +#ifdef HAVE_MEM_WIN32 + ZEND_MM_MEM_WIN32_DSC, +#endif #ifdef HAVE_MEM_MALLOC ZEND_MM_MEM_MALLOC_DSC, #endif @@ -248,9 +257,6 @@ #ifdef HAVE_MEM_MMAP_ZERO ZEND_MM_MEM_MMAP_ZERO_DSC, #endif -#ifdef HAVE_MEM_WIN32 - ZEND_MM_MEM_WIN32_DSC, -#endif {NULL, NULL, NULL, NULL, NULL, NULL} };

« previous php.zend-engine.cvs (#5378) next »