Commit: ab22fda7e52f097297f1dcdf06f474cea858adc0 Author: Xinchen Hui <larue...@php.net> Sun, 9 Jun 2013 13:35:45 +0800 Parents: a7e25bdd486c28958c2db2f28c9fda63bb938405 e8f004d54252e0130b88131bdc46a41ed365c51e Branches: PHP-5.4 PHP-5.5 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=ab22fda7e52f097297f1dcdf06f474cea858adc0 Log: Merge branch 'PHP-5.3' into PHP-5.4 Changed paths: MM Zend/zend_vm_def.h MM Zend/zend_vm_execute.h Diff: diff --cc Zend/zend_vm_def.h index eed65e3,d471f39..40e2e42 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@@ -2682,27 -2325,26 +2682,29 @@@ ZEND_VM_HELPER(zend_do_fcall_common_hel } if (!RETURN_VALUE_USED(opline)) { - zval_ptr_dtor(&EX_T(opline->result.u.var).var.ptr); + zval_ptr_dtor(&ret->var.ptr); } + } else if (RETURN_VALUE_USED(opline)) { + EX_T(opline->result.u.var).var.ptr = NULL; } - } else if (EX(function_state).function->type == ZEND_USER_FUNCTION) { + } else if (fbc->type == ZEND_USER_FUNCTION) { EX(original_return_value) = EG(return_value_ptr_ptr); EG(active_symbol_table) = NULL; - EG(active_op_array) = &EX(function_state).function->op_array; + EG(active_op_array) = &fbc->op_array; EG(return_value_ptr_ptr) = NULL; - if (RETURN_VALUE_USED(opline)) { - EG(return_value_ptr_ptr) = &EX_T(opline->result.u.var).var.ptr; - EX_T(opline->result.u.var).var.ptr = NULL; - EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr; - EX_T(opline->result.u.var).var.fcall_returned_reference = EX(function_state).function->common.return_reference; + if (RETURN_VALUE_USED(opline)) { + temp_variable *ret = &EX_T(opline->result.var); + + ret->var.ptr = NULL; + EG(return_value_ptr_ptr) = &ret->var.ptr; + ret->var.ptr_ptr = &ret->var.ptr; + ret->var.fcall_returned_reference = (fbc->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) != 0; } - if (zend_execute == execute && !EG(exception)) { - EX(call_opline) = opline; - ZEND_VM_ENTER(); + if (EXPECTED(zend_execute == execute)) { + if (EXPECTED(EG(exception) == NULL)) { + ZEND_VM_ENTER(); + } } else { zend_execute(EG(active_op_array) TSRMLS_CC); } diff --cc Zend/zend_vm_execute.h index 18b3f47,993b822..ad6d708 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@@ -646,27 -325,26 +646,29 @@@ static int ZEND_FASTCALL zend_do_fcall_ } if (!RETURN_VALUE_USED(opline)) { - zval_ptr_dtor(&EX_T(opline->result.u.var).var.ptr); + zval_ptr_dtor(&ret->var.ptr); } + } else if (RETURN_VALUE_USED(opline)) { + EX_T(opline->result.u.var).var.ptr = NULL; } - } else if (EX(function_state).function->type == ZEND_USER_FUNCTION) { + } else if (fbc->type == ZEND_USER_FUNCTION) { EX(original_return_value) = EG(return_value_ptr_ptr); EG(active_symbol_table) = NULL; - EG(active_op_array) = &EX(function_state).function->op_array; + EG(active_op_array) = &fbc->op_array; EG(return_value_ptr_ptr) = NULL; if (RETURN_VALUE_USED(opline)) { - EG(return_value_ptr_ptr) = &EX_T(opline->result.u.var).var.ptr; - EX_T(opline->result.u.var).var.ptr = NULL; - EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr; - EX_T(opline->result.u.var).var.fcall_returned_reference = EX(function_state).function->common.return_reference; + temp_variable *ret = &EX_T(opline->result.var); + + ret->var.ptr = NULL; + EG(return_value_ptr_ptr) = &ret->var.ptr; + ret->var.ptr_ptr = &ret->var.ptr; + ret->var.fcall_returned_reference = (fbc->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) != 0; } - if (zend_execute == execute && !EG(exception)) { - EX(call_opline) = opline; - ZEND_VM_ENTER(); + if (EXPECTED(zend_execute == execute)) { + if (EXPECTED(EG(exception) == NULL)) { + ZEND_VM_ENTER(); + } } else { zend_execute(EG(active_op_array) TSRMLS_CC); } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php