]> granicus.if.org Git - php/commitdiff
Moved very rare exception check into a single place.
authorDmitry Stogov <dmitry@zend.com>
Wed, 27 Jun 2018 10:34:15 +0000 (13:34 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 27 Jun 2018 10:34:15 +0000 (13:34 +0300)
Zend/zend_execute.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index ac4555f6839068549131a58b5bb328e81c45ea4b..3d4dcdb2c138b156839b0175dd67f28bf821000f 100644 (file)
@@ -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)) {
index c4d7eb425fb3ae45894863748fe52c7803a36720..d85bf9974a423d2ac8b82f6c379d611357ec1611 100644 (file)
@@ -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)) {
index a5d1ff100b9494f434c77428e6b5a50423f5b97e..aa89f097eb82136fc559188b8e471a8ed41572c3 100644 (file)
@@ -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)) {