]> granicus.if.org Git - php/commitdiff
micro-optimization
authorDmitry Stogov <dmitry@zend.com>
Tue, 8 Sep 2020 13:47:30 +0000 (16:47 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 8 Sep 2020 13:47:30 +0000 (16:47 +0300)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 6138ecb26322321e2829343282d41b75cdb0f1e8..9c96328fc414160b2dd040e708a886303cafb5d7 100644 (file)
@@ -3729,12 +3729,8 @@ ZEND_VM_C_LABEL(try_function_name):
                call = NULL;
        }
 
-       FREE_OP2();
-       if (UNEXPECTED(!call)) {
-               HANDLE_EXCEPTION();
-       }
-
        if (OP2_TYPE & (IS_VAR|IS_TMP_VAR)) {
+               FREE_OP2();
                if (UNEXPECTED(EG(exception))) {
                        if (call) {
                                 if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
@@ -3745,6 +3741,8 @@ ZEND_VM_C_LABEL(try_function_name):
                        }
                        HANDLE_EXCEPTION();
                }
+       } else if (!call) {
+               HANDLE_EXCEPTION();
        }
 
        call->prev_execute_data = EX(call);
index dbbacebe0d1a0ddf587b8854d4e7656ad5801df7..af6dd7f090c669d7ae2e37120e1c7b0542cf7369 100644 (file)
@@ -3676,11 +3676,8 @@ try_function_name:
                call = NULL;
        }
 
-       if (UNEXPECTED(!call)) {
-               HANDLE_EXCEPTION();
-       }
-
        if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
+
                if (UNEXPECTED(EG(exception))) {
                        if (call) {
                                 if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
@@ -3691,6 +3688,8 @@ try_function_name:
                        }
                        HANDLE_EXCEPTION();
                }
+       } else if (!call) {
+               HANDLE_EXCEPTION();
        }
 
        call->prev_execute_data = EX(call);
@@ -3843,12 +3842,8 @@ try_function_name:
                call = NULL;
        }
 
-       zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
-       if (UNEXPECTED(!call)) {
-               HANDLE_EXCEPTION();
-       }
-
        if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
+               zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
                if (UNEXPECTED(EG(exception))) {
                        if (call) {
                                 if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
@@ -3859,6 +3854,8 @@ try_function_name:
                        }
                        HANDLE_EXCEPTION();
                }
+       } else if (!call) {
+               HANDLE_EXCEPTION();
        }
 
        call->prev_execute_data = EX(call);
@@ -3989,11 +3986,8 @@ try_function_name:
                call = NULL;
        }
 
-       if (UNEXPECTED(!call)) {
-               HANDLE_EXCEPTION();
-       }
-
        if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
+
                if (UNEXPECTED(EG(exception))) {
                        if (call) {
                                 if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
@@ -4004,6 +3998,8 @@ try_function_name:
                        }
                        HANDLE_EXCEPTION();
                }
+       } else if (!call) {
+               HANDLE_EXCEPTION();
        }
 
        call->prev_execute_data = EX(call);