diff options
author | Dmitry Stogov <dmitry@zend.com> | 2018-06-27 13:34:15 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2018-06-27 13:34:15 +0300 |
commit | 56450c6e65a3f68a1a1c69600d7ae5ca9e5a135c (patch) | |
tree | 9b17e5ca4442b602ea7f63dcc25de6768fc84dc1 | |
parent | 32489322a1e7fc55fd09826c83a23ac7b702a29b (diff) | |
download | php-git-56450c6e65a3f68a1a1c69600d7ae5ca9e5a135c.tar.gz |
Moved very rare exception check into a single place.
-rw-r--r-- | Zend/zend_execute.c | 8 | ||||
-rw-r--r-- | Zend/zend_vm_def.h | 4 | ||||
-rw-r--r-- | 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)) { |