Make use of direct returns in some places

This commit is contained in:
Nikita Popov 2013-08-26 19:14:34 +02:00
parent 0856714576
commit 47ee470992
4 changed files with 21 additions and 32 deletions

View File

@ -59,14 +59,8 @@ ZEND_METHOD(Closure, __invoke) /* {{{ */
} else if (call_user_function_ex(CG(function_table), NULL, this_ptr, &closure_result_ptr, ZEND_NUM_ARGS(), arguments, 1, NULL TSRMLS_CC) == FAILURE) { } else if (call_user_function_ex(CG(function_table), NULL, this_ptr, &closure_result_ptr, ZEND_NUM_ARGS(), arguments, 1, NULL TSRMLS_CC) == FAILURE) {
RETVAL_FALSE; RETVAL_FALSE;
} else if (closure_result_ptr) { } else if (closure_result_ptr) {
if (Z_ISREF_P(closure_result_ptr) && return_value_ptr) { zval_ptr_dtor(&return_value);
if (return_value) { *return_value_ptr = closure_result_ptr;
zval_ptr_dtor(&return_value);
}
*return_value_ptr = closure_result_ptr;
} else {
RETVAL_ZVAL(closure_result_ptr, 1, 1);
}
} }
efree(arguments); efree(arguments);

View File

@ -430,7 +430,7 @@ ZEND_METHOD(Generator, current)
zend_generator_ensure_initialized(generator TSRMLS_CC); zend_generator_ensure_initialized(generator TSRMLS_CC);
if (generator->value) { if (generator->value) {
RETURN_ZVAL(generator->value, 1, 0); RETURN_ZVAL_FAST(generator->value);
} }
} }
/* }}} */ /* }}} */
@ -450,7 +450,7 @@ ZEND_METHOD(Generator, key)
zend_generator_ensure_initialized(generator TSRMLS_CC); zend_generator_ensure_initialized(generator TSRMLS_CC);
if (generator->key) { if (generator->key) {
RETURN_ZVAL(generator->key, 1, 0); RETURN_ZVAL_FAST(generator->key);
} }
} }
/* }}} */ /* }}} */
@ -499,7 +499,7 @@ ZEND_METHOD(Generator, send)
zend_generator_resume(generator TSRMLS_CC); zend_generator_resume(generator TSRMLS_CC);
if (generator->value) { if (generator->value) {
RETURN_ZVAL(generator->value, 1, 0); RETURN_ZVAL_FAST(generator->value);
} }
} }
/* }}} */ /* }}} */
@ -532,7 +532,7 @@ ZEND_METHOD(Generator, throw)
zend_generator_resume(generator TSRMLS_CC); zend_generator_resume(generator TSRMLS_CC);
if (generator->value) { if (generator->value) {
RETURN_ZVAL(generator->value, 1, 0); RETURN_ZVAL_FAST(generator->value);
} }
} else { } else {
/* If the generator is already closed throw the exception in the /* If the generator is already closed throw the exception in the

View File

@ -896,11 +896,8 @@ ZEND_API void zend_std_call_user_call(INTERNAL_FUNCTION_PARAMETERS) /* {{{ */
zend_call_method_with_2_params(&this_ptr, ce, &ce->__call, ZEND_CALL_FUNC_NAME, &method_result_ptr, method_name_ptr, method_args_ptr); zend_call_method_with_2_params(&this_ptr, ce, &ce->__call, ZEND_CALL_FUNC_NAME, &method_result_ptr, method_name_ptr, method_args_ptr);
if (method_result_ptr) { if (method_result_ptr) {
if (Z_ISREF_P(method_result_ptr) || Z_REFCOUNT_P(method_result_ptr) > 1) { RETVAL_ZVAL_FAST(method_result_ptr);
RETVAL_ZVAL(method_result_ptr, 1, 1); zval_ptr_dtor(&method_result_ptr);
} else {
RETVAL_ZVAL(method_result_ptr, 0, 1);
}
} }
/* now destruct all auxiliaries */ /* now destruct all auxiliaries */
@ -1113,11 +1110,8 @@ ZEND_API void zend_std_callstatic_user_call(INTERNAL_FUNCTION_PARAMETERS) /* {{{
zend_call_method_with_2_params(NULL, ce, &ce->__callstatic, ZEND_CALLSTATIC_FUNC_NAME, &method_result_ptr, method_name_ptr, method_args_ptr); zend_call_method_with_2_params(NULL, ce, &ce->__callstatic, ZEND_CALLSTATIC_FUNC_NAME, &method_result_ptr, method_name_ptr, method_args_ptr);
if (method_result_ptr) { if (method_result_ptr) {
if (Z_ISREF_P(method_result_ptr) || Z_REFCOUNT_P(method_result_ptr) > 1) { RETVAL_ZVAL_FAST(method_result_ptr);
RETVAL_ZVAL(method_result_ptr, 1, 1); zval_ptr_dtor(&method_result_ptr);
} else {
RETVAL_ZVAL(method_result_ptr, 0, 1);
}
} }
/* now destruct all auxiliaries */ /* now destruct all auxiliaries */

View File

@ -830,7 +830,7 @@ PHP_FUNCTION(end)
RETURN_FALSE; RETURN_FALSE;
} }
RETURN_ZVAL(*entry, 1, 0); RETURN_ZVAL_FAST(*entry);
} }
} }
/* }}} */ /* }}} */
@ -853,7 +853,7 @@ PHP_FUNCTION(prev)
RETURN_FALSE; RETURN_FALSE;
} }
RETURN_ZVAL(*entry, 1, 0); RETURN_ZVAL_FAST(*entry);
} }
} }
/* }}} */ /* }}} */
@ -876,7 +876,7 @@ PHP_FUNCTION(next)
RETURN_FALSE; RETURN_FALSE;
} }
RETURN_ZVAL(*entry, 1, 0); RETURN_ZVAL_FAST(*entry);
} }
} }
/* }}} */ /* }}} */
@ -899,7 +899,7 @@ PHP_FUNCTION(reset)
RETURN_FALSE; RETURN_FALSE;
} }
RETURN_ZVAL(*entry, 1, 0); RETURN_ZVAL_FAST(*entry);
} }
} }
/* }}} */ /* }}} */
@ -918,7 +918,8 @@ PHP_FUNCTION(current)
if (zend_hash_get_current_data(array, (void **) &entry) == FAILURE) { if (zend_hash_get_current_data(array, (void **) &entry) == FAILURE) {
RETURN_FALSE; RETURN_FALSE;
} }
RETURN_ZVAL(*entry, 1, 0);
RETURN_ZVAL_FAST(*entry);
} }
/* }}} */ /* }}} */
@ -958,7 +959,7 @@ PHP_FUNCTION(min)
RETVAL_NULL(); RETVAL_NULL();
} else { } else {
if (zend_hash_minmax(Z_ARRVAL_PP(args[0]), php_array_data_compare, 0, (void **) &result TSRMLS_CC) == SUCCESS) { if (zend_hash_minmax(Z_ARRVAL_PP(args[0]), php_array_data_compare, 0, (void **) &result TSRMLS_CC) == SUCCESS) {
RETVAL_ZVAL(*result, 1, 0); RETVAL_ZVAL_FAST(*result);
} else { } else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Array must contain at least one element"); php_error_docref(NULL TSRMLS_CC, E_WARNING, "Array must contain at least one element");
RETVAL_FALSE; RETVAL_FALSE;
@ -978,7 +979,7 @@ PHP_FUNCTION(min)
} }
} }
RETVAL_ZVAL(*min, 1, 0); RETVAL_ZVAL_FAST(*min);
} }
if (args) { if (args) {
@ -1009,7 +1010,7 @@ PHP_FUNCTION(max)
RETVAL_NULL(); RETVAL_NULL();
} else { } else {
if (zend_hash_minmax(Z_ARRVAL_PP(args[0]), php_array_data_compare, 1, (void **) &result TSRMLS_CC) == SUCCESS) { if (zend_hash_minmax(Z_ARRVAL_PP(args[0]), php_array_data_compare, 1, (void **) &result TSRMLS_CC) == SUCCESS) {
RETVAL_ZVAL(*result, 1, 0); RETVAL_ZVAL_FAST(*result);
} else { } else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Array must contain at least one element"); php_error_docref(NULL TSRMLS_CC, E_WARNING, "Array must contain at least one element");
RETVAL_FALSE; RETVAL_FALSE;
@ -1029,7 +1030,7 @@ PHP_FUNCTION(max)
} }
} }
RETVAL_ZVAL(*max, 1, 0); RETVAL_ZVAL_FAST(*max);
} }
if (args) { if (args) {
@ -1955,7 +1956,7 @@ static void _phpi_pop(INTERNAL_FUNCTION_PARAMETERS, int off_the_end)
zend_hash_internal_pointer_reset(Z_ARRVAL_P(stack)); zend_hash_internal_pointer_reset(Z_ARRVAL_P(stack));
} }
zend_hash_get_current_data(Z_ARRVAL_P(stack), (void **)&val); zend_hash_get_current_data(Z_ARRVAL_P(stack), (void **)&val);
RETVAL_ZVAL(*val, 1, 0); RETVAL_ZVAL_FAST(*val);
/* Delete the first or last value */ /* Delete the first or last value */
zend_hash_get_current_key_ex(Z_ARRVAL_P(stack), &key, &key_len, &index, 0, NULL); zend_hash_get_current_key_ex(Z_ARRVAL_P(stack), &key, &key_len, &index, 0, NULL);