From d6bcf2bf2e90eeda9155e70d757cc76412835925 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 20 May 2015 22:51:45 +0300 Subject: [PATCH] Micro optimization --- Zend/zend_vm_def.h | 9 ++++----- Zend/zend_vm_execute.h | 36 ++++++++++++++++-------------------- 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 5d6b128cb3..a1d308e442 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -3924,15 +3924,14 @@ ZEND_VM_HANDLER(62, ZEND_RETURN, CONST|TMP|VAR|CV, ANY) if (OP1_TYPE == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) { SAVE_OPLINE(); retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R); - CHECK_EXCEPTION(); - } - - if (!EX(return_value)) { + if (EX(return_value)) { + ZVAL_NULL(EX(return_value)); + } + } else if (!EX(return_value)) { if (OP1_TYPE == IS_VAR || OP1_TYPE == IS_TMP_VAR ) { if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) { SAVE_OPLINE(); zval_dtor_func_for_ptr(Z_COUNTED_P(free_op1)); - CHECK_EXCEPTION(); } } } else { diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index e98f9dbf15..9da4546b78 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -3252,15 +3252,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_CONST_HANDLER(ZEND if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) { SAVE_OPLINE(); retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R); - CHECK_EXCEPTION(); - } - - if (!EX(return_value)) { + if (EX(return_value)) { + ZVAL_NULL(EX(return_value)); + } + } else if (!EX(return_value)) { if (IS_CONST == IS_VAR || IS_CONST == IS_TMP_VAR ) { if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) { SAVE_OPLINE(); zval_dtor_func_for_ptr(Z_COUNTED_P(free_op1)); - CHECK_EXCEPTION(); } } } else { @@ -11642,15 +11641,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_TMP_HANDLER(ZEND_O if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) { SAVE_OPLINE(); retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R); - CHECK_EXCEPTION(); - } - - if (!EX(return_value)) { + if (EX(return_value)) { + ZVAL_NULL(EX(return_value)); + } + } else if (!EX(return_value)) { if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_TMP_VAR ) { if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) { SAVE_OPLINE(); zval_dtor_func_for_ptr(Z_COUNTED_P(free_op1)); - CHECK_EXCEPTION(); } } } else { @@ -14814,15 +14812,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_VAR_HANDLER(ZEND_O if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) { SAVE_OPLINE(); retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R); - CHECK_EXCEPTION(); - } - - if (!EX(return_value)) { + if (EX(return_value)) { + ZVAL_NULL(EX(return_value)); + } + } else if (!EX(return_value)) { if (IS_VAR == IS_VAR || IS_VAR == IS_TMP_VAR ) { if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) { SAVE_OPLINE(); zval_dtor_func_for_ptr(Z_COUNTED_P(free_op1)); - CHECK_EXCEPTION(); } } } else { @@ -28723,15 +28720,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_CV_HANDLER(ZEND_OP if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) { SAVE_OPLINE(); retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R); - CHECK_EXCEPTION(); - } - - if (!EX(return_value)) { + if (EX(return_value)) { + ZVAL_NULL(EX(return_value)); + } + } else if (!EX(return_value)) { if (IS_CV == IS_VAR || IS_CV == IS_TMP_VAR ) { if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) { SAVE_OPLINE(); zval_dtor_func_for_ptr(Z_COUNTED_P(free_op1)); - CHECK_EXCEPTION(); } } } else { -- 2.40.0