dmitry                                   Fri, 09 Jul 2010 07:31:18 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=301106

Log:
zend_ptr_stack allocation is delayed before the actual usage

Changed paths:
    U   php/php-src/trunk/NEWS
    U   php/php-src/trunk/Zend/zend_ptr_stack.c
    U   php/php-src/trunk/Zend/zend_ptr_stack.h

Modified: php/php-src/trunk/NEWS
===================================================================
--- php/php-src/trunk/NEWS      2010-07-09 05:33:03 UTC (rev 301105)
+++ php/php-src/trunk/NEWS      2010-07-09 07:31:18 UTC (rev 301106)
@@ -18,7 +18,7 @@
     A constant class name may be used as a direct operand of ZEND_FETCH_*
     instruction without previous ZEND_FETCH_CLASS.
   . eliminated unnecessary iterations during request startup/shutdown
-  . zend_stack initialization is delayed before the actual usage
+  . zend_stack and zend_ptr_stack allocation is delayed before the actual usage
   . $GLOBALS became a JIT autoglobal, so it's initialized only if used
     (this may affect opcode caches)
 - Added concept of interned strings. All strings constants known at compile

Modified: php/php-src/trunk/Zend/zend_ptr_stack.c
===================================================================
--- php/php-src/trunk/Zend/zend_ptr_stack.c     2010-07-09 05:33:03 UTC (rev 
301105)
+++ php/php-src/trunk/Zend/zend_ptr_stack.c     2010-07-09 07:31:18 UTC (rev 
301106)
@@ -27,9 +27,8 @@

 ZEND_API void zend_ptr_stack_init_ex(zend_ptr_stack *stack, zend_bool 
persistent)
 {
-       stack->top_element = stack->elements = (void **) pemalloc(sizeof(void 
*)*PTR_STACK_BLOCK_SIZE, persistent);
-       stack->max = PTR_STACK_BLOCK_SIZE;
-       stack->top = 0;
+       stack->top_element = stack->elements = NULL;
+       stack->top = stack->max = 0;
        stack->persistent = persistent;
 }


Modified: php/php-src/trunk/Zend/zend_ptr_stack.h
===================================================================
--- php/php-src/trunk/Zend/zend_ptr_stack.h     2010-07-09 05:33:03 UTC (rev 
301105)
+++ php/php-src/trunk/Zend/zend_ptr_stack.h     2010-07-09 07:31:18 UTC (rev 
301106)
@@ -46,8 +46,9 @@
 #define ZEND_PTR_STACK_RESIZE_IF_NEEDED(stack, count)          \
        if (stack->top+count > stack->max) {                                    
\
                /* we need to allocate more memory */                           
\
-               stack->max *= 2;                                                
                        \
-               stack->max += count;                                            
                \
+               do {                                                            
                                \
+                       stack->max += PTR_STACK_BLOCK_SIZE;                     
        \
+               } while (stack->top+count > stack->max);                        
\
                stack->elements = (void **) perealloc(stack->elements, 
(sizeof(void *) * (stack->max)), stack->persistent);     \
                stack->top_element = stack->elements+stack->top;        \
        }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to