summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-06-27 13:34:15 +0300
committerDmitry Stogov <dmitry@zend.com>2018-06-27 13:34:15 +0300
commit56450c6e65a3f68a1a1c69600d7ae5ca9e5a135c (patch)
tree9b17e5ca4442b602ea7f63dcc25de6768fc84dc1
parent32489322a1e7fc55fd09826c83a23ac7b702a29b (diff)
downloadphp-git-56450c6e65a3f68a1a1c69600d7ae5ca9e5a135c.tar.gz
Moved very rare exception check into a single place.
-rw-r--r--Zend/zend_execute.c8
-rw-r--r--Zend/zend_vm_def.h4
-rw-r--r--Zend/zend_vm_execute.h32
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)) {