]> granicus.if.org Git - php/commitdiff
Save one zval copy
authorXinchen Hui <laruence@php.net>
Mon, 26 May 2014 03:49:43 +0000 (11:49 +0800)
committerXinchen Hui <laruence@php.net>
Mon, 26 May 2014 03:49:43 +0000 (11:49 +0800)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index afb569bdc26d8b96a50dda2c6dc14c95e557feb5..98abe35a76888338c8fa19df827ea79d19eb0728 100644 (file)
@@ -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();
 
index d4d58b1bddbe72dedbb973cd5fa81f18e1b3c624..04c75eab7e66ad407de05c521ab2ad0533cd9099 100644 (file)
@@ -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();