From 02fde346f844f80d393c407427977fa8d8f1be2a Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Mon, 26 May 2014 11:49:43 +0800 Subject: [PATCH] Save one zval copy --- Zend/zend_vm_def.h | 13 +++++-------- Zend/zend_vm_execute.h | 13 +++++-------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index afb569bdc2..98abe35a76 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -1918,16 +1918,13 @@ ZEND_VM_HELPER(zend_do_fcall_common_helper, ANY, ANY) } } - if (UNEXPECTED(EX(call)->num_additional_args != 0)) { - num_args = opline->extended_value + EX(call)->num_additional_args; - EX(function_state).arguments = zend_vm_stack_push_args(num_args TSRMLS_CC); - } else { - zval tmp; - + if (EXPECTED(EX(call)->num_additional_args == 0)) { num_args = opline->extended_value; - ZVAL_LONG(&tmp, num_args); EX(function_state).arguments = zend_vm_stack_top(TSRMLS_C); - zend_vm_stack_push(&tmp TSRMLS_CC); + ZVAL_LONG(zend_vm_stack_top_inc(TSRMLS_C), num_args); + } else { + num_args = opline->extended_value + EX(call)->num_additional_args; + EX(function_state).arguments = zend_vm_stack_push_args(num_args TSRMLS_CC); } LOAD_OPLINE(); diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index d4d58b1bdd..04c75eab7e 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -528,16 +528,13 @@ static int ZEND_FASTCALL zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_AR } } - if (UNEXPECTED(EX(call)->num_additional_args != 0)) { - num_args = opline->extended_value + EX(call)->num_additional_args; - EX(function_state).arguments = zend_vm_stack_push_args(num_args TSRMLS_CC); - } else { - zval tmp; - + if (EXPECTED(EX(call)->num_additional_args == 0)) { num_args = opline->extended_value; - ZVAL_LONG(&tmp, num_args); EX(function_state).arguments = zend_vm_stack_top(TSRMLS_C); - zend_vm_stack_push(&tmp TSRMLS_CC); + ZVAL_LONG(zend_vm_stack_top_inc(TSRMLS_C), num_args); + } else { + num_args = opline->extended_value + EX(call)->num_additional_args; + EX(function_state).arguments = zend_vm_stack_push_args(num_args TSRMLS_CC); } LOAD_OPLINE(); -- 2.40.0