summaryrefslogtreecommitdiff
path: root/Zend/zend_builtin_functions.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2017-10-24 17:27:31 +0300
committerDmitry Stogov <dmitry@zend.com>2017-10-24 17:27:31 +0300
commit9cf87aa1965504b1cd9dc595a3c6af418a416cfc (patch)
tree887b57fe5485acc98b2ffb44149a1c049433a67c /Zend/zend_builtin_functions.c
parent2ca08a3d66ea6fc6cca5337c5ade757bc86c1934 (diff)
downloadphp-git-9cf87aa1965504b1cd9dc595a3c6af418a416cfc.tar.gz
Avoid HashTable allocations for empty arrays (using zend_empty_array).
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r--Zend/zend_builtin_functions.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index 5793ea3308..387e9f5e60 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -472,8 +472,8 @@ ZEND_FUNCTION(func_get_args)
arg_count = ZEND_CALL_NUM_ARGS(ex);
- array_init_size(return_value, arg_count);
if (arg_count) {
+ array_init_size(return_value, arg_count);
first_extra_arg = ex->func->op_array.num_args;
zend_hash_real_init(Z_ARRVAL_P(return_value), 1);
ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) {
@@ -512,6 +512,8 @@ ZEND_FUNCTION(func_get_args)
}
} ZEND_HASH_FILL_END();
Z_ARRVAL_P(return_value)->nNumOfElements = arg_count;
+ } else {
+ ZVAL_EMPTY_ARRAY(return_value);
}
}
/* }}} */
@@ -2122,11 +2124,11 @@ static void debug_backtrace_get_args(zend_execute_data *call, zval *arg_array) /
{
uint32_t num_args = ZEND_CALL_NUM_ARGS(call);
- array_init_size(arg_array, num_args);
if (num_args) {
uint32_t i = 0;
zval *p = ZEND_CALL_ARG(call, 1);
+ array_init_size(arg_array, num_args);
zend_hash_real_init(Z_ARRVAL_P(arg_array), 1);
ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(arg_array)) {
if (call->func->type == ZEND_USER_FUNCTION) {
@@ -2184,6 +2186,8 @@ static void debug_backtrace_get_args(zend_execute_data *call, zval *arg_array) /
}
} ZEND_HASH_FILL_END();
Z_ARRVAL_P(arg_array)->nNumOfElements = num_args;
+ } else {
+ ZVAL_EMPTY_ARRAY(arg_array);
}
}
/* }}} */