From 56450c6e65a3f68a1a1c69600d7ae5ca9e5a135c Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 27 Jun 2018 13:34:15 +0300 Subject: [PATCH] Moved very rare exception check into a single place. --- Zend/zend_execute.c | 8 +++++--- Zend/zend_vm_def.h | 4 +--- Zend/zend_vm_execute.h | 32 ++++++++------------------------ 3 files changed, 14 insertions(+), 30 deletions(-) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index ac4555f683..3d4dcdb2c1 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1228,6 +1228,10 @@ static zend_never_inline ZEND_COLD void zend_wrong_string_offset(EXECUTE_DATA_D) const zend_op *end; uint32_t var; + if (UNEXPECTED(EG(exception) != NULL)) { + return; + } + switch (opline->opcode) { case ZEND_ASSIGN_ADD: case ZEND_ASSIGN_SUB: @@ -1859,9 +1863,7 @@ fetch_from_array: zend_use_new_element_for_string(); } else { zend_check_string_offset(dim, type EXECUTE_DATA_CC); - if (EXPECTED(EG(exception) == NULL)) { - zend_wrong_string_offset(EXECUTE_DATA_C); - } + zend_wrong_string_offset(EXECUTE_DATA_C); } ZVAL_ERROR(result); } else if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) { diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index c4d7eb425f..d85bf9974a 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -914,9 +914,7 @@ ZEND_VM_C_LABEL(assign_dim_op_convert_to_array): zend_use_new_element_for_string(); } else { zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC); - if (EXPECTED(EG(exception) == NULL)) { - zend_wrong_string_offset(EXECUTE_DATA_C); - } + zend_wrong_string_offset(EXECUTE_DATA_C); } UNDEF_RESULT(); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index a5d1ff100b..aa89f097eb 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -21985,9 +21985,7 @@ assign_dim_op_convert_to_array: zend_use_new_element_for_string(); } else { zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC); - if (EXPECTED(EG(exception) == NULL)) { - zend_wrong_string_offset(EXECUTE_DATA_C); - } + zend_wrong_string_offset(EXECUTE_DATA_C); } UNDEF_RESULT(); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { @@ -24254,9 +24252,7 @@ assign_dim_op_convert_to_array: zend_use_new_element_for_string(); } else { zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC); - if (EXPECTED(EG(exception) == NULL)) { - zend_wrong_string_offset(EXECUTE_DATA_C); - } + zend_wrong_string_offset(EXECUTE_DATA_C); } UNDEF_RESULT(); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { @@ -26673,9 +26669,7 @@ assign_dim_op_convert_to_array: zend_use_new_element_for_string(); } else { zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC); - if (EXPECTED(EG(exception) == NULL)) { - zend_wrong_string_offset(EXECUTE_DATA_C); - } + zend_wrong_string_offset(EXECUTE_DATA_C); } UNDEF_RESULT(); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { @@ -27963,9 +27957,7 @@ assign_dim_op_convert_to_array: zend_use_new_element_for_string(); } else { zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC); - if (EXPECTED(EG(exception) == NULL)) { - zend_wrong_string_offset(EXECUTE_DATA_C); - } + zend_wrong_string_offset(EXECUTE_DATA_C); } UNDEF_RESULT(); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { @@ -38528,9 +38520,7 @@ assign_dim_op_convert_to_array: zend_use_new_element_for_string(); } else { zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC); - if (EXPECTED(EG(exception) == NULL)) { - zend_wrong_string_offset(EXECUTE_DATA_C); - } + zend_wrong_string_offset(EXECUTE_DATA_C); } UNDEF_RESULT(); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { @@ -42378,9 +42368,7 @@ assign_dim_op_convert_to_array: zend_use_new_element_for_string(); } else { zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC); - if (EXPECTED(EG(exception) == NULL)) { - zend_wrong_string_offset(EXECUTE_DATA_C); - } + zend_wrong_string_offset(EXECUTE_DATA_C); } UNDEF_RESULT(); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { @@ -45574,9 +45562,7 @@ assign_dim_op_convert_to_array: zend_use_new_element_for_string(); } else { zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC); - if (EXPECTED(EG(exception) == NULL)) { - zend_wrong_string_offset(EXECUTE_DATA_C); - } + zend_wrong_string_offset(EXECUTE_DATA_C); } UNDEF_RESULT(); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { @@ -47902,9 +47888,7 @@ assign_dim_op_convert_to_array: zend_use_new_element_for_string(); } else { zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC); - if (EXPECTED(EG(exception) == NULL)) { - zend_wrong_string_offset(EXECUTE_DATA_C); - } + zend_wrong_string_offset(EXECUTE_DATA_C); } UNDEF_RESULT(); } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { -- 2.40.0