summaryrefslogtreecommitdiff
path: root/Zend/zend.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2008-04-11 09:43:28 +0000
committerDmitry Stogov <dmitry@php.net>2008-04-11 09:43:28 +0000
commitd9dd1b9e144749e9563c789d89297fefc173766b (patch)
treebcc74a1ca0ce1ff00036dc2755c4be73b020879f /Zend/zend.c
parentca3391f44c0285bf2717c2ab2273745bde572889 (diff)
downloadphp-git-d9dd1b9e144749e9563c789d89297fefc173766b.tar.gz
Optimized ZEND_RETURN opcode to not allocate and copy return value if it is not
used.
Diffstat (limited to 'Zend/zend.c')
-rw-r--r--Zend/zend.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/Zend/zend.c b/Zend/zend.c
index 71b39fcb74..b6329e9b7c 100644
--- a/Zend/zend.c
+++ b/Zend/zend.c
@@ -1150,7 +1150,6 @@ ZEND_API int zend_execute_scripts(int type TSRMLS_DC, zval **retval, int file_co
zend_file_handle *file_handle;
zend_op_array *orig_op_array = EG(active_op_array);
zval **orig_retval_ptr_ptr = EG(return_value_ptr_ptr);
- zval *local_retval = NULL;
va_start(files, file_count);
for (i = 0; i < file_count; i++) {
@@ -1165,7 +1164,7 @@ ZEND_API int zend_execute_scripts(int type TSRMLS_DC, zval **retval, int file_co
}
zend_destroy_file_handle(file_handle TSRMLS_CC);
if (EG(active_op_array)) {
- EG(return_value_ptr_ptr) = retval ? retval : &local_retval;
+ EG(return_value_ptr_ptr) = retval ? retval : NULL;
zend_execute(EG(active_op_array) TSRMLS_CC);
if (EG(exception)) {
if (EG(user_exception_handler)) {
@@ -1195,13 +1194,6 @@ ZEND_API int zend_execute_scripts(int type TSRMLS_DC, zval **retval, int file_co
} else {
zend_exception_error(EG(exception) TSRMLS_CC);
}
- if (retval == NULL && *EG(return_value_ptr_ptr) != NULL) {
- zval_ptr_dtor(EG(return_value_ptr_ptr));
- local_retval = NULL;
- }
- } else if (!retval && *EG(return_value_ptr_ptr)) {
- zval_ptr_dtor(EG(return_value_ptr_ptr));
- local_retval = NULL;
}
destroy_op_array(EG(active_op_array) TSRMLS_CC);
efree(EG(active_op_array));