From 22f6cf91d54d2a475e818ba82b673ede08e923ea Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 26 May 2014 17:15:52 +0400 Subject: [PATCH] Optimize func_get_args() to build packed array --- Zend/zend_builtin_functions.c | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) 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; } } /* }}} */ -- 2.50.1