]> granicus.if.org Git - php/commitdiff
Move cold code, duplicated by specializer, into helper functions
authorDmitry Stogov <dmitry@zend.com>
Tue, 20 Feb 2018 20:44:25 +0000 (23:44 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 20 Feb 2018 20:44:25 +0000 (23:44 +0300)
Zend/zend_execute.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 12366af39834d71e5a4536e12f98cbdc038d8ba7..6afb51801cc4fe9dd61b213a9430d142ccc7767a 100644 (file)
@@ -1091,14 +1091,21 @@ static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_illegal_offset(void)
        zend_error(E_WARNING, "Illegal offset type");
 }
 
-static zend_never_inline void zend_assign_to_object_dim(zval *object, zval *dim, zval *value)
+static zend_never_inline void zend_assign_to_object_dim(zval *object, zval *dim, zval *value OPLINE_DC EXECUTE_DATA_DC)
 {
        if (UNEXPECTED(!Z_OBJ_HT_P(object)->write_dimension)) {
                zend_use_object_as_array();
+               if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+                       ZVAL_UNDEF(EX_VAR(opline->result.var));
+               }
                return;
        }
 
        Z_OBJ_HT_P(object)->write_dimension(object, dim, value);
+
+       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+               ZVAL_COPY(EX_VAR(opline->result.var), value);
+       }
 }
 
 static zend_never_inline void zend_binary_assign_op_obj_dim(zval *object, zval *property, zval *value, zval *retval, binary_op_type binary_op EXECUTE_DATA_DC)
@@ -1328,7 +1335,7 @@ static zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_deprecated_function(c
                ZSTR_VAL(fbc->common.function_name));
 }
 
-static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim, zval *value, zval *result EXECUTE_DATA_DC)
+static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim, zval *value OPLINE_DC EXECUTE_DATA_DC)
 {
        zend_uchar c;
        size_t string_len;
@@ -1338,8 +1345,8 @@ static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim,
        if (offset < -(zend_long)Z_STRLEN_P(str)) {
                /* Error on negative offset */
                zend_error(E_WARNING, "Illegal string offset:  " ZEND_LONG_FMT, offset);
-               if (result) {
-                       ZVAL_NULL(result);
+               if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+                       ZVAL_NULL(EX_VAR(opline->result.var));
                }
                return;
        }
@@ -1359,8 +1366,8 @@ static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim,
        if (string_len == 0) {
                /* Error on empty input string */
                zend_error(E_WARNING, "Cannot assign an empty string to a string offset");
-               if (result) {
-                       ZVAL_NULL(result);
+               if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+                       ZVAL_NULL(EX_VAR(opline->result.var));
                }
                return;
        }
@@ -1386,13 +1393,13 @@ static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim,
 
        Z_STRVAL_P(str)[offset] = c;
 
-       if (result) {
+       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                /* Return the new character */
-               ZVAL_INTERNED_STR(result, ZSTR_CHAR(c));
+               ZVAL_INTERNED_STR(EX_VAR(opline->result.var), ZSTR_CHAR(c));
        }
 }
 
-static zend_never_inline void zend_post_incdec_overloaded_property(zval *object, zval *property, void **cache_slot, int inc, zval *result)
+static zend_never_inline void zend_post_incdec_overloaded_property(zval *object, zval *property, void **cache_slot, int inc OPLINE_DC EXECUTE_DATA_DC)
 {
        if (Z_OBJ_HT_P(object)->read_property && Z_OBJ_HT_P(object)->write_property) {
                zval rv, obj;
@@ -1404,7 +1411,7 @@ static zend_never_inline void zend_post_incdec_overloaded_property(zval *object,
                z = Z_OBJ_HT(obj)->read_property(&obj, property, BP_VAR_R, cache_slot, &rv);
                if (UNEXPECTED(EG(exception))) {
                        OBJ_RELEASE(Z_OBJ(obj));
-                       ZVAL_UNDEF(result);
+                       ZVAL_UNDEF(EX_VAR(opline->result.var));
                        return;
                }
 
@@ -1418,11 +1425,11 @@ static zend_never_inline void zend_post_incdec_overloaded_property(zval *object,
                }
 
                if (UNEXPECTED(Z_TYPE_P(z) == IS_REFERENCE)) {
-                       ZVAL_COPY(result, Z_REFVAL_P(z));
+                       ZVAL_COPY(EX_VAR(opline->result.var), Z_REFVAL_P(z));
                } else {
-                       ZVAL_COPY(result, z);
+                       ZVAL_COPY(EX_VAR(opline->result.var), z);
                }
-               ZVAL_COPY(&z_copy, result);
+               ZVAL_COPY(&z_copy, EX_VAR(opline->result.var));
                if (inc) {
                        increment_function(&z_copy);
                } else {
@@ -1434,11 +1441,11 @@ static zend_never_inline void zend_post_incdec_overloaded_property(zval *object,
                zval_ptr_dtor(z);
        } else {
                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
-               ZVAL_NULL(result);
+               ZVAL_NULL(EX_VAR(opline->result.var));
        }
 }
 
-static zend_never_inline void zend_pre_incdec_overloaded_property(zval *object, zval *property, void **cache_slot, int inc, zval *result)
+static zend_never_inline void zend_pre_incdec_overloaded_property(zval *object, zval *property, void **cache_slot, int inc OPLINE_DC EXECUTE_DATA_DC)
 {
        zval rv;
 
@@ -1450,8 +1457,8 @@ static zend_never_inline void zend_pre_incdec_overloaded_property(zval *object,
                zptr = z = Z_OBJ_HT(obj)->read_property(&obj, property, BP_VAR_R, cache_slot, &rv);
                if (UNEXPECTED(EG(exception))) {
                        OBJ_RELEASE(Z_OBJ(obj));
-                       if (result) {
-                               ZVAL_UNDEF(result);
+                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+                               ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                        return;
                }
@@ -1471,21 +1478,21 @@ static zend_never_inline void zend_pre_incdec_overloaded_property(zval *object,
                } else {
                        decrement_function(z);
                }
-               if (UNEXPECTED(result)) {
-                       ZVAL_COPY(result, z);
+               if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+                       ZVAL_COPY(EX_VAR(opline->result.var), z);
                }
                Z_OBJ_HT(obj)->write_property(&obj, property, z, cache_slot);
                OBJ_RELEASE(Z_OBJ(obj));
                zval_ptr_dtor(zptr);
        } else {
                zend_error(E_WARNING, "Attempt to increment/decrement property of non-object");
-               if (UNEXPECTED(result)) {
-                       ZVAL_NULL(result);
+               if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+                       ZVAL_NULL(EX_VAR(opline->result.var));
                }
        }
 }
 
-static zend_never_inline void zend_assign_op_overloaded_property(zval *object, zval *property, void **cache_slot, zval *value, binary_op_type binary_op, zval *result)
+static zend_never_inline void zend_assign_op_overloaded_property(zval *object, zval *property, void **cache_slot, zval *value, binary_op_type binary_op OPLINE_DC EXECUTE_DATA_DC)
 {
        zval *z;
        zval rv, obj;
@@ -1497,8 +1504,8 @@ static zend_never_inline void zend_assign_op_overloaded_property(zval *object, z
                z = Z_OBJ_HT(obj)->read_property(&obj, property, BP_VAR_R, cache_slot, &rv);
                if (UNEXPECTED(EG(exception))) {
                        OBJ_RELEASE(Z_OBJ(obj));
-                       if (result) {
-                               ZVAL_UNDEF(result);
+                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+                               ZVAL_UNDEF(EX_VAR(opline->result.var));
                        }
                        return;
                }
@@ -1515,14 +1522,14 @@ static zend_never_inline void zend_assign_op_overloaded_property(zval *object, z
                ZVAL_DEREF(z);
                binary_op(z, z, value);
                Z_OBJ_HT(obj)->write_property(&obj, property, z, cache_slot);
-               if (UNEXPECTED(result)) {
-                       ZVAL_COPY(result, z);
+               if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+                       ZVAL_COPY(EX_VAR(opline->result.var), z);
                }
                zval_ptr_dtor(zptr);
        } else {
                zend_error(E_WARNING, "Attempt to assign property of non-object");
-               if (UNEXPECTED(result)) {
-                       ZVAL_NULL(result);
+               if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
+                       ZVAL_NULL(EX_VAR(opline->result.var));
                }
        }
        OBJ_RELEASE(Z_OBJ(obj));
index a3c5431e557bd75fe2e890b3b86ef35979892c38..062ef949299269bfc469679fdbead294c750e009 100644 (file)
@@ -839,7 +839,7 @@ ZEND_VM_C_LABEL(assign_op_object):
                                }
                        }
                } else {
-                       zend_assign_op_overloaded_property(object, property, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_assign_op_overloaded_property(object, property, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -1110,7 +1110,7 @@ ZEND_VM_C_LABEL(pre_incdec_object):
                                }
                        }
                } else {
-                       zend_pre_incdec_overloaded_property(object, property, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_pre_incdec_overloaded_property(object, property, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -1184,7 +1184,7 @@ ZEND_VM_C_LABEL(post_incdec_object):
                                }
                        }
                } else {
-                       zend_post_incdec_overloaded_property(object, property, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, EX_VAR(opline->result.var));
+                       zend_post_incdec_overloaded_property(object, property, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -2288,11 +2288,7 @@ ZEND_VM_C_LABEL(try_assign_dim_array):
                        dim = GET_OP2_ZVAL_PTR(BP_VAR_R);
                        value = GET_OP_DATA_ZVAL_PTR_DEREF(BP_VAR_R);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        FREE_OP_DATA();
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -2305,7 +2301,7 @@ ZEND_VM_C_LABEL(try_assign_dim_array):
                        } else {
                                dim = GET_OP2_ZVAL_PTR(BP_VAR_R);
                                value = GET_OP_DATA_ZVAL_PTR_DEREF(BP_VAR_R);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                FREE_OP_DATA();
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
index 961e111df18103c6c711241e3aba075ade991beb..01c69d560c846381738293601fcc7feef47c4d78 100644 (file)
@@ -22537,7 +22537,7 @@ assign_op_object:
                                }
                        }
                } else {
-                       zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -22972,7 +22972,7 @@ pre_incdec_object:
                                }
                        }
                } else {
-                       zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -23045,7 +23045,7 @@ post_incdec_object:
                                }
                        }
                } else {
-                       zend_post_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, EX_VAR(opline->result.var));
+                       zend_post_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -23799,11 +23799,7 @@ try_assign_dim_array:
                        dim = RT_CONSTANT(opline, opline->op2);
                        value = RT_CONSTANT((opline+1), (opline+1)->op1);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (IS_CONST == IS_UNUSED) {
@@ -23815,7 +23811,7 @@ try_assign_dim_array:
                        } else {
                                dim = RT_CONSTANT(opline, opline->op2);
                                value = RT_CONSTANT((opline+1), (opline+1)->op1);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -23890,11 +23886,7 @@ try_assign_dim_array:
                        dim = RT_CONSTANT(opline, opline->op2);
                        value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        zval_ptr_dtor_nogc(free_op_data);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -23907,7 +23899,7 @@ try_assign_dim_array:
                        } else {
                                dim = RT_CONSTANT(opline, opline->op2);
                                value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                zval_ptr_dtor_nogc(free_op_data);
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -23982,11 +23974,7 @@ try_assign_dim_array:
                        dim = RT_CONSTANT(opline, opline->op2);
                        value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        zval_ptr_dtor_nogc(free_op_data);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -23999,7 +23987,7 @@ try_assign_dim_array:
                        } else {
                                dim = RT_CONSTANT(opline, opline->op2);
                                value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                zval_ptr_dtor_nogc(free_op_data);
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -24074,11 +24062,7 @@ try_assign_dim_array:
                        dim = RT_CONSTANT(opline, opline->op2);
                        value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (IS_CONST == IS_UNUSED) {
@@ -24090,7 +24074,7 @@ try_assign_dim_array:
                        } else {
                                dim = RT_CONSTANT(opline, opline->op2);
                                value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -24856,7 +24840,7 @@ assign_op_object:
                                }
                        }
                } else {
-                       zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -25293,7 +25277,7 @@ pre_incdec_object:
                                }
                        }
                } else {
-                       zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -25367,7 +25351,7 @@ post_incdec_object:
                                }
                        }
                } else {
-                       zend_post_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, EX_VAR(opline->result.var));
+                       zend_post_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -26123,11 +26107,7 @@ try_assign_dim_array:
                        dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
                        value = RT_CONSTANT((opline+1), (opline+1)->op1);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
@@ -26139,7 +26119,7 @@ try_assign_dim_array:
                        } else {
                                dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
                                value = RT_CONSTANT((opline+1), (opline+1)->op1);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -26214,11 +26194,7 @@ try_assign_dim_array:
                        dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
                        value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        zval_ptr_dtor_nogc(free_op_data);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -26231,7 +26207,7 @@ try_assign_dim_array:
                        } else {
                                dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
                                value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                zval_ptr_dtor_nogc(free_op_data);
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -26306,11 +26282,7 @@ try_assign_dim_array:
                        dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
                        value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        zval_ptr_dtor_nogc(free_op_data);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -26323,7 +26295,7 @@ try_assign_dim_array:
                        } else {
                                dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
                                value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                zval_ptr_dtor_nogc(free_op_data);
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -26398,11 +26370,7 @@ try_assign_dim_array:
                        dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
                        value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
@@ -26414,7 +26382,7 @@ try_assign_dim_array:
                        } else {
                                dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
                                value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -27629,11 +27597,7 @@ try_assign_dim_array:
                        dim = NULL;
                        value = RT_CONSTANT((opline+1), (opline+1)->op1);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (IS_UNUSED == IS_UNUSED) {
@@ -27645,7 +27609,7 @@ try_assign_dim_array:
                        } else {
                                dim = NULL;
                                value = RT_CONSTANT((opline+1), (opline+1)->op1);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -27720,11 +27684,7 @@ try_assign_dim_array:
                        dim = NULL;
                        value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        zval_ptr_dtor_nogc(free_op_data);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -27737,7 +27697,7 @@ try_assign_dim_array:
                        } else {
                                dim = NULL;
                                value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                zval_ptr_dtor_nogc(free_op_data);
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -27812,11 +27772,7 @@ try_assign_dim_array:
                        dim = NULL;
                        value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        zval_ptr_dtor_nogc(free_op_data);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -27829,7 +27785,7 @@ try_assign_dim_array:
                        } else {
                                dim = NULL;
                                value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                zval_ptr_dtor_nogc(free_op_data);
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -27904,11 +27860,7 @@ try_assign_dim_array:
                        dim = NULL;
                        value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (IS_UNUSED == IS_UNUSED) {
@@ -27920,7 +27872,7 @@ try_assign_dim_array:
                        } else {
                                dim = NULL;
                                value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -28658,7 +28610,7 @@ assign_op_object:
                                }
                        }
                } else {
-                       zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -29093,7 +29045,7 @@ pre_incdec_object:
                                }
                        }
                } else {
-                       zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -29166,7 +29118,7 @@ post_incdec_object:
                                }
                        }
                } else {
-                       zend_post_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, EX_VAR(opline->result.var));
+                       zend_post_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -29920,11 +29872,7 @@ try_assign_dim_array:
                        dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
                        value = RT_CONSTANT((opline+1), (opline+1)->op1);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (IS_CV == IS_UNUSED) {
@@ -29936,7 +29884,7 @@ try_assign_dim_array:
                        } else {
                                dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
                                value = RT_CONSTANT((opline+1), (opline+1)->op1);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -30011,11 +29959,7 @@ try_assign_dim_array:
                        dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
                        value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        zval_ptr_dtor_nogc(free_op_data);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -30028,7 +29972,7 @@ try_assign_dim_array:
                        } else {
                                dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
                                value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                zval_ptr_dtor_nogc(free_op_data);
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -30103,11 +30047,7 @@ try_assign_dim_array:
                        dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
                        value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        zval_ptr_dtor_nogc(free_op_data);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -30120,7 +30060,7 @@ try_assign_dim_array:
                        } else {
                                dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
                                value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                zval_ptr_dtor_nogc(free_op_data);
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -30195,11 +30135,7 @@ try_assign_dim_array:
                        dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
                        value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (IS_CV == IS_UNUSED) {
@@ -30211,7 +30147,7 @@ try_assign_dim_array:
                        } else {
                                dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
                                value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -31216,7 +31152,7 @@ assign_op_object:
                                }
                        }
                } else {
-                       zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -31369,7 +31305,7 @@ pre_incdec_object:
                                }
                        }
                } else {
-                       zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -31442,7 +31378,7 @@ post_incdec_object:
                                }
                        }
                } else {
-                       zend_post_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, EX_VAR(opline->result.var));
+                       zend_post_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -32974,7 +32910,7 @@ assign_op_object:
                                }
                        }
                } else {
-                       zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -33127,7 +33063,7 @@ pre_incdec_object:
                                }
                        }
                } else {
-                       zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -33201,7 +33137,7 @@ post_incdec_object:
                                }
                        }
                } else {
-                       zend_post_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, EX_VAR(opline->result.var));
+                       zend_post_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -35375,7 +35311,7 @@ assign_op_object:
                                }
                        }
                } else {
-                       zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -35528,7 +35464,7 @@ pre_incdec_object:
                                }
                        }
                } else {
-                       zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -35601,7 +35537,7 @@ post_incdec_object:
                                }
                        }
                } else {
-                       zend_post_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, EX_VAR(opline->result.var));
+                       zend_post_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -39434,7 +39370,7 @@ assign_op_object:
                                }
                        }
                } else {
-                       zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -39869,7 +39805,7 @@ pre_incdec_object:
                                }
                        }
                } else {
-                       zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -39942,7 +39878,7 @@ post_incdec_object:
                                }
                        }
                } else {
-                       zend_post_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, EX_VAR(opline->result.var));
+                       zend_post_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -41068,11 +41004,7 @@ try_assign_dim_array:
                        dim = RT_CONSTANT(opline, opline->op2);
                        value = RT_CONSTANT((opline+1), (opline+1)->op1);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (IS_CONST == IS_UNUSED) {
@@ -41084,7 +41016,7 @@ try_assign_dim_array:
                        } else {
                                dim = RT_CONSTANT(opline, opline->op2);
                                value = RT_CONSTANT((opline+1), (opline+1)->op1);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -41159,11 +41091,7 @@ try_assign_dim_array:
                        dim = RT_CONSTANT(opline, opline->op2);
                        value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        zval_ptr_dtor_nogc(free_op_data);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -41176,7 +41104,7 @@ try_assign_dim_array:
                        } else {
                                dim = RT_CONSTANT(opline, opline->op2);
                                value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                zval_ptr_dtor_nogc(free_op_data);
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -41251,11 +41179,7 @@ try_assign_dim_array:
                        dim = RT_CONSTANT(opline, opline->op2);
                        value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        zval_ptr_dtor_nogc(free_op_data);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -41268,7 +41192,7 @@ try_assign_dim_array:
                        } else {
                                dim = RT_CONSTANT(opline, opline->op2);
                                value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                zval_ptr_dtor_nogc(free_op_data);
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -41343,11 +41267,7 @@ try_assign_dim_array:
                        dim = RT_CONSTANT(opline, opline->op2);
                        value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (IS_CONST == IS_UNUSED) {
@@ -41359,7 +41279,7 @@ try_assign_dim_array:
                        } else {
                                dim = RT_CONSTANT(opline, opline->op2);
                                value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -43278,7 +43198,7 @@ assign_op_object:
                                }
                        }
                } else {
-                       zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -43715,7 +43635,7 @@ pre_incdec_object:
                                }
                        }
                } else {
-                       zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -43789,7 +43709,7 @@ post_incdec_object:
                                }
                        }
                } else {
-                       zend_post_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, EX_VAR(opline->result.var));
+                       zend_post_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -44793,11 +44713,7 @@ try_assign_dim_array:
                        dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
                        value = RT_CONSTANT((opline+1), (opline+1)->op1);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
@@ -44809,7 +44725,7 @@ try_assign_dim_array:
                        } else {
                                dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
                                value = RT_CONSTANT((opline+1), (opline+1)->op1);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -44884,11 +44800,7 @@ try_assign_dim_array:
                        dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
                        value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        zval_ptr_dtor_nogc(free_op_data);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -44901,7 +44813,7 @@ try_assign_dim_array:
                        } else {
                                dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
                                value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                zval_ptr_dtor_nogc(free_op_data);
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -44976,11 +44888,7 @@ try_assign_dim_array:
                        dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
                        value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        zval_ptr_dtor_nogc(free_op_data);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -44993,7 +44901,7 @@ try_assign_dim_array:
                        } else {
                                dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
                                value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                zval_ptr_dtor_nogc(free_op_data);
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -45068,11 +44976,7 @@ try_assign_dim_array:
                        dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
                        value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
@@ -45084,7 +44988,7 @@ try_assign_dim_array:
                        } else {
                                dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
                                value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -47158,11 +47062,7 @@ try_assign_dim_array:
                        dim = NULL;
                        value = RT_CONSTANT((opline+1), (opline+1)->op1);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (IS_UNUSED == IS_UNUSED) {
@@ -47174,7 +47074,7 @@ try_assign_dim_array:
                        } else {
                                dim = NULL;
                                value = RT_CONSTANT((opline+1), (opline+1)->op1);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -47249,11 +47149,7 @@ try_assign_dim_array:
                        dim = NULL;
                        value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        zval_ptr_dtor_nogc(free_op_data);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -47266,7 +47162,7 @@ try_assign_dim_array:
                        } else {
                                dim = NULL;
                                value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                zval_ptr_dtor_nogc(free_op_data);
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -47341,11 +47237,7 @@ try_assign_dim_array:
                        dim = NULL;
                        value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        zval_ptr_dtor_nogc(free_op_data);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -47358,7 +47250,7 @@ try_assign_dim_array:
                        } else {
                                dim = NULL;
                                value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                zval_ptr_dtor_nogc(free_op_data);
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -47433,11 +47325,7 @@ try_assign_dim_array:
                        dim = NULL;
                        value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (IS_UNUSED == IS_UNUSED) {
@@ -47449,7 +47337,7 @@ try_assign_dim_array:
                        } else {
                                dim = NULL;
                                value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -48949,7 +48837,7 @@ assign_op_object:
                                }
                        }
                } else {
-                       zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR((opline+1)->extended_value) : NULL), value, binary_op OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -49384,7 +49272,7 @@ pre_incdec_object:
                                }
                        }
                } else {
-                       zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
+                       zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -49457,7 +49345,7 @@ post_incdec_object:
                                }
                        }
                } else {
-                       zend_post_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc, EX_VAR(opline->result.var));
+                       zend_post_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(opline->extended_value) : NULL), inc OPLINE_CC EXECUTE_DATA_CC);
                }
        } while (0);
 
@@ -50457,11 +50345,7 @@ try_assign_dim_array:
                        dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
                        value = RT_CONSTANT((opline+1), (opline+1)->op1);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (IS_CV == IS_UNUSED) {
@@ -50473,7 +50357,7 @@ try_assign_dim_array:
                        } else {
                                dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
                                value = RT_CONSTANT((opline+1), (opline+1)->op1);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -50548,11 +50432,7 @@ try_assign_dim_array:
                        dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
                        value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        zval_ptr_dtor_nogc(free_op_data);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -50565,7 +50445,7 @@ try_assign_dim_array:
                        } else {
                                dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
                                value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                zval_ptr_dtor_nogc(free_op_data);
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -50640,11 +50520,7 @@ try_assign_dim_array:
                        dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
                        value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        zval_ptr_dtor_nogc(free_op_data);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
@@ -50657,7 +50533,7 @@ try_assign_dim_array:
                        } else {
                                dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
                                value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
                                zval_ptr_dtor_nogc(free_op_data);
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
@@ -50732,11 +50608,7 @@ try_assign_dim_array:
                        dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
                        value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
 
-                       zend_assign_to_object_dim(object_ptr, dim, value);
-
-                       if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
-                               ZVAL_COPY(EX_VAR(opline->result.var), value);
-                       }
+                       zend_assign_to_object_dim(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (IS_CV == IS_UNUSED) {
@@ -50748,7 +50620,7 @@ try_assign_dim_array:
                        } else {
                                dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
                                value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
-                               zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
+                               zend_assign_to_string_offset(object_ptr, dim, value OPLINE_CC EXECUTE_DATA_CC);
 
                        }
                } else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {