From: Dmitry Stogov Date: Mon, 26 May 2014 13:15:52 +0000 (+0400) Subject: Optimize func_get_args() to build packed array X-Git-Tag: POST_PHPNG_MERGE~281 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=22f6cf91d54d2a475e818ba82b673ede08e923ea;p=php Optimize func_get_args() to build packed array --- diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index f10d455db1..6f5b25fbf2 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -460,18 +460,27 @@ ZEND_FUNCTION(func_get_args) arg_count = Z_LVAL_P(p); /* this is the amount of arguments passed to func_get_args(); */ array_init_size(return_value, arg_count); - for (i=0; iarData; + for (i=0; ih = i; + q->key = NULL; + if (!Z_ISREF_P(p)) { + ZVAL_COPY(&q->val, p); + } else { + ZVAL_DUP(&q->val, Z_REFVAL_P(p)); + } + p++; + q++; + } + Z_ARRVAL_P(return_value)->nNumUsed = i; + Z_ARRVAL_P(return_value)->nNumOfElements = i; + Z_ARRVAL_P(return_value)->nNextFreeElement = i + 1; + Z_ARRVAL_P(return_value)->nInternalPointer = 0; } } /* }}} */