]> granicus.if.org Git - php/commitdiff
ASSIGN_ADD micro optimization
authorDmitry Stogov <dmitry@zend.com>
Tue, 12 Apr 2016 23:47:17 +0000 (02:47 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 12 Apr 2016 23:47:17 +0000 (02:47 +0300)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 664c19e5ed0fb841f2777cbd222278d1497828d7..3465731e5f21e22fda616f1a0242e2728d0ef5d9 100644 (file)
@@ -2281,7 +2281,6 @@ ZEND_VM_C_LABEL(try_assign_dim_array):
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                ZEND_VM_C_GOTO(assign_dim_error);
                        }
-                       FREE_OP2();
                }
                value = GET_OP_DATA_ZVAL_PTR(BP_VAR_R);
                value = zend_assign_to_variable(variable_ptr, value, OP_DATA_TYPE);
@@ -2314,7 +2313,6 @@ ZEND_VM_C_LABEL(try_assign_dim_array):
                        } else {
                                FREE_OP_DATA();
                        }
-                       FREE_OP2();
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (OP2_TYPE == IS_UNUSED) {
@@ -2326,7 +2324,6 @@ 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_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-                                       FREE_OP2();
                                        FREE_OP_DATA();
                                }
                        } else {
@@ -2342,14 +2339,17 @@ ZEND_VM_C_LABEL(assign_dim_convert_to_array):
                        if (OP1_TYPE != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       GET_OP2_ZVAL_PTR(BP_VAR_R);
 ZEND_VM_C_LABEL(assign_dim_error):
-                       FREE_UNFETCHED_OP2();
                        FREE_UNFETCHED_OP_DATA();
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if (OP2_TYPE != IS_UNUSED) {
+               FREE_OP2();
+       }
        FREE_OP1_VAR_PTR();
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
index c2daf4d0cdf500b9a1827b0a5a547d63df4497cc..742437a1b7ed915f51ee32085f32cda29ddce458 100644 (file)
@@ -18498,7 +18498,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = EX_CONSTANT((opline+1)->op1);
                value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
@@ -18531,7 +18530,6 @@ try_assign_dim_array:
                        } else {
 
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_CONST == IS_UNUSED) {
@@ -18544,7 +18542,6 @@ try_assign_dim_array:
                                        value = EX_CONSTANT((opline+1)->op1);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
 
-
                                }
                        } else {
                                zval_ptr_dtor_nogc(object_ptr);
@@ -18559,13 +18556,16 @@ assign_dim_convert_to_array:
                        if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       EX_CONSTANT(opline->op2);
 assign_dim_error:
 
-
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
+       }
+       if (IS_CONST != IS_UNUSED) {
+
        }
        if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
        /* assign_dim has two opcodes! */
@@ -18604,7 +18604,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_tmp((opline+1)->op1.var, execute_data, &free_op_data);
                value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
@@ -18637,7 +18636,6 @@ try_assign_dim_array:
                        } else {
                                zval_ptr_dtor_nogc(free_op_data);
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_CONST == IS_UNUSED) {
@@ -18649,7 +18647,6 @@ try_assign_dim_array:
                                        dim = EX_CONSTANT(opline->op2);
                                        value = _get_zval_ptr_tmp((opline+1)->op1.var, execute_data, &free_op_data);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-
                                        zval_ptr_dtor_nogc(free_op_data);
                                }
                        } else {
@@ -18665,13 +18662,16 @@ assign_dim_convert_to_array:
                        if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       EX_CONSTANT(opline->op2);
 assign_dim_error:
-
                        zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
+       }
+       if (IS_CONST != IS_UNUSED) {
+
        }
        if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
        /* assign_dim has two opcodes! */
@@ -18710,7 +18710,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_var((opline+1)->op1.var, execute_data, &free_op_data);
                value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
@@ -18743,7 +18742,6 @@ try_assign_dim_array:
                        } else {
                                zval_ptr_dtor_nogc(free_op_data);
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_CONST == IS_UNUSED) {
@@ -18755,7 +18753,6 @@ try_assign_dim_array:
                                        dim = EX_CONSTANT(opline->op2);
                                        value = _get_zval_ptr_var_deref((opline+1)->op1.var, execute_data, &free_op_data);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-
                                        zval_ptr_dtor_nogc(free_op_data);
                                }
                        } else {
@@ -18771,13 +18768,16 @@ assign_dim_convert_to_array:
                        if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       EX_CONSTANT(opline->op2);
 assign_dim_error:
-
                        zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
+       }
+       if (IS_CONST != IS_UNUSED) {
+
        }
        if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
        /* assign_dim has two opcodes! */
@@ -18816,7 +18816,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_cv_BP_VAR_R(execute_data, (opline+1)->op1.var);
                value = zend_assign_to_variable(variable_ptr, value, IS_CV);
@@ -18849,7 +18848,6 @@ try_assign_dim_array:
                        } else {
 
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_CONST == IS_UNUSED) {
@@ -18862,7 +18860,6 @@ try_assign_dim_array:
                                        value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, (opline+1)->op1.var);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
 
-
                                }
                        } else {
                                zval_ptr_dtor_nogc(object_ptr);
@@ -18877,13 +18874,16 @@ assign_dim_convert_to_array:
                        if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       EX_CONSTANT(opline->op2);
 assign_dim_error:
 
-
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
+       }
+       if (IS_CONST != IS_UNUSED) {
+
        }
        if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
        /* assign_dim has two opcodes! */
@@ -20497,7 +20497,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = EX_CONSTANT((opline+1)->op1);
                value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
@@ -20530,7 +20529,6 @@ try_assign_dim_array:
                        } else {
 
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_UNUSED == IS_UNUSED) {
@@ -20543,7 +20541,6 @@ try_assign_dim_array:
                                        value = EX_CONSTANT((opline+1)->op1);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
 
-
                                }
                        } else {
                                zval_ptr_dtor_nogc(object_ptr);
@@ -20558,13 +20555,16 @@ assign_dim_convert_to_array:
                        if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       NULL;
 assign_dim_error:
 
-
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
+       }
+       if (IS_UNUSED != IS_UNUSED) {
+
        }
        if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
        /* assign_dim has two opcodes! */
@@ -20603,7 +20603,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_tmp((opline+1)->op1.var, execute_data, &free_op_data);
                value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
@@ -20636,7 +20635,6 @@ try_assign_dim_array:
                        } else {
                                zval_ptr_dtor_nogc(free_op_data);
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_UNUSED == IS_UNUSED) {
@@ -20648,7 +20646,6 @@ try_assign_dim_array:
                                        dim = NULL;
                                        value = _get_zval_ptr_tmp((opline+1)->op1.var, execute_data, &free_op_data);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-
                                        zval_ptr_dtor_nogc(free_op_data);
                                }
                        } else {
@@ -20664,13 +20661,16 @@ assign_dim_convert_to_array:
                        if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       NULL;
 assign_dim_error:
-
                        zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
+       }
+       if (IS_UNUSED != IS_UNUSED) {
+
        }
        if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
        /* assign_dim has two opcodes! */
@@ -20709,7 +20709,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_var((opline+1)->op1.var, execute_data, &free_op_data);
                value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
@@ -20742,7 +20741,6 @@ try_assign_dim_array:
                        } else {
                                zval_ptr_dtor_nogc(free_op_data);
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_UNUSED == IS_UNUSED) {
@@ -20754,7 +20752,6 @@ try_assign_dim_array:
                                        dim = NULL;
                                        value = _get_zval_ptr_var_deref((opline+1)->op1.var, execute_data, &free_op_data);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-
                                        zval_ptr_dtor_nogc(free_op_data);
                                }
                        } else {
@@ -20770,13 +20767,16 @@ assign_dim_convert_to_array:
                        if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       NULL;
 assign_dim_error:
-
                        zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
+       }
+       if (IS_UNUSED != IS_UNUSED) {
+
        }
        if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
        /* assign_dim has two opcodes! */
@@ -20815,7 +20815,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_cv_BP_VAR_R(execute_data, (opline+1)->op1.var);
                value = zend_assign_to_variable(variable_ptr, value, IS_CV);
@@ -20848,7 +20847,6 @@ try_assign_dim_array:
                        } else {
 
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_UNUSED == IS_UNUSED) {
@@ -20861,7 +20859,6 @@ try_assign_dim_array:
                                        value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, (opline+1)->op1.var);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
 
-
                                }
                        } else {
                                zval_ptr_dtor_nogc(object_ptr);
@@ -20876,13 +20873,16 @@ assign_dim_convert_to_array:
                        if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       NULL;
 assign_dim_error:
 
-
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
+       }
+       if (IS_UNUSED != IS_UNUSED) {
+
        }
        if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
        /* assign_dim has two opcodes! */
@@ -22953,7 +22953,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = EX_CONSTANT((opline+1)->op1);
                value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
@@ -22986,7 +22985,6 @@ try_assign_dim_array:
                        } else {
 
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_CV == IS_UNUSED) {
@@ -22999,7 +22997,6 @@ try_assign_dim_array:
                                        value = EX_CONSTANT((opline+1)->op1);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
 
-
                                }
                        } else {
                                zval_ptr_dtor_nogc(object_ptr);
@@ -23014,13 +23011,16 @@ assign_dim_convert_to_array:
                        if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var);
 assign_dim_error:
 
-
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
+       }
+       if (IS_CV != IS_UNUSED) {
+
        }
        if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
        /* assign_dim has two opcodes! */
@@ -23059,7 +23059,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_tmp((opline+1)->op1.var, execute_data, &free_op_data);
                value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
@@ -23092,7 +23091,6 @@ try_assign_dim_array:
                        } else {
                                zval_ptr_dtor_nogc(free_op_data);
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_CV == IS_UNUSED) {
@@ -23104,7 +23102,6 @@ try_assign_dim_array:
                                        dim = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var);
                                        value = _get_zval_ptr_tmp((opline+1)->op1.var, execute_data, &free_op_data);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-
                                        zval_ptr_dtor_nogc(free_op_data);
                                }
                        } else {
@@ -23120,13 +23117,16 @@ assign_dim_convert_to_array:
                        if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var);
 assign_dim_error:
-
                        zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
+       }
+       if (IS_CV != IS_UNUSED) {
+
        }
        if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
        /* assign_dim has two opcodes! */
@@ -23165,7 +23165,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_var((opline+1)->op1.var, execute_data, &free_op_data);
                value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
@@ -23198,7 +23197,6 @@ try_assign_dim_array:
                        } else {
                                zval_ptr_dtor_nogc(free_op_data);
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_CV == IS_UNUSED) {
@@ -23210,7 +23208,6 @@ try_assign_dim_array:
                                        dim = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var);
                                        value = _get_zval_ptr_var_deref((opline+1)->op1.var, execute_data, &free_op_data);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-
                                        zval_ptr_dtor_nogc(free_op_data);
                                }
                        } else {
@@ -23226,13 +23223,16 @@ assign_dim_convert_to_array:
                        if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var);
 assign_dim_error:
-
                        zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
+       }
+       if (IS_CV != IS_UNUSED) {
+
        }
        if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
        /* assign_dim has two opcodes! */
@@ -23271,7 +23271,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_cv_BP_VAR_R(execute_data, (opline+1)->op1.var);
                value = zend_assign_to_variable(variable_ptr, value, IS_CV);
@@ -23304,7 +23303,6 @@ try_assign_dim_array:
                        } else {
 
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_CV == IS_UNUSED) {
@@ -23317,7 +23315,6 @@ try_assign_dim_array:
                                        value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, (opline+1)->op1.var);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
 
-
                                }
                        } else {
                                zval_ptr_dtor_nogc(object_ptr);
@@ -23332,13 +23329,16 @@ assign_dim_convert_to_array:
                        if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var);
 assign_dim_error:
 
-
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
+       }
+       if (IS_CV != IS_UNUSED) {
+
        }
        if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
        /* assign_dim has two opcodes! */
@@ -25550,7 +25550,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-                       zval_ptr_dtor_nogc(free_op2);
                }
                value = EX_CONSTANT((opline+1)->op1);
                value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
@@ -25583,7 +25582,6 @@ try_assign_dim_array:
                        } else {
 
                        }
-                       zval_ptr_dtor_nogc(free_op2);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
@@ -25595,7 +25593,6 @@ try_assign_dim_array:
                                        dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
                                        value = EX_CONSTANT((opline+1)->op1);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-                                       zval_ptr_dtor_nogc(free_op2);
 
                                }
                        } else {
@@ -25611,14 +25608,17 @@ assign_dim_convert_to_array:
                        if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
 assign_dim_error:
-                       zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
 
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
+               zval_ptr_dtor_nogc(free_op2);
+       }
        if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -25656,7 +25656,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-                       zval_ptr_dtor_nogc(free_op2);
                }
                value = _get_zval_ptr_tmp((opline+1)->op1.var, execute_data, &free_op_data);
                value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
@@ -25689,7 +25688,6 @@ try_assign_dim_array:
                        } else {
                                zval_ptr_dtor_nogc(free_op_data);
                        }
-                       zval_ptr_dtor_nogc(free_op2);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
@@ -25701,7 +25699,6 @@ try_assign_dim_array:
                                        dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
                                        value = _get_zval_ptr_tmp((opline+1)->op1.var, execute_data, &free_op_data);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-                                       zval_ptr_dtor_nogc(free_op2);
                                        zval_ptr_dtor_nogc(free_op_data);
                                }
                        } else {
@@ -25717,14 +25714,17 @@ assign_dim_convert_to_array:
                        if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
 assign_dim_error:
-                       zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
                        zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
+               zval_ptr_dtor_nogc(free_op2);
+       }
        if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -25762,7 +25762,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-                       zval_ptr_dtor_nogc(free_op2);
                }
                value = _get_zval_ptr_var((opline+1)->op1.var, execute_data, &free_op_data);
                value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
@@ -25795,7 +25794,6 @@ try_assign_dim_array:
                        } else {
                                zval_ptr_dtor_nogc(free_op_data);
                        }
-                       zval_ptr_dtor_nogc(free_op2);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
@@ -25807,7 +25805,6 @@ try_assign_dim_array:
                                        dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
                                        value = _get_zval_ptr_var_deref((opline+1)->op1.var, execute_data, &free_op_data);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-                                       zval_ptr_dtor_nogc(free_op2);
                                        zval_ptr_dtor_nogc(free_op_data);
                                }
                        } else {
@@ -25823,14 +25820,17 @@ assign_dim_convert_to_array:
                        if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
 assign_dim_error:
-                       zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
                        zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
+               zval_ptr_dtor_nogc(free_op2);
+       }
        if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -25868,7 +25868,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-                       zval_ptr_dtor_nogc(free_op2);
                }
                value = _get_zval_ptr_cv_BP_VAR_R(execute_data, (opline+1)->op1.var);
                value = zend_assign_to_variable(variable_ptr, value, IS_CV);
@@ -25901,7 +25900,6 @@ try_assign_dim_array:
                        } else {
 
                        }
-                       zval_ptr_dtor_nogc(free_op2);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
@@ -25913,7 +25911,6 @@ try_assign_dim_array:
                                        dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
                                        value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, (opline+1)->op1.var);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-                                       zval_ptr_dtor_nogc(free_op2);
 
                                }
                        } else {
@@ -25929,14 +25926,17 @@ assign_dim_convert_to_array:
                        if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
 assign_dim_error:
-                       zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
 
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
+               zval_ptr_dtor_nogc(free_op2);
+       }
        if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -38467,7 +38467,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = EX_CONSTANT((opline+1)->op1);
                value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
@@ -38500,7 +38499,6 @@ try_assign_dim_array:
                        } else {
 
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_CONST == IS_UNUSED) {
@@ -38513,7 +38511,6 @@ try_assign_dim_array:
                                        value = EX_CONSTANT((opline+1)->op1);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
 
-
                                }
                        } else {
                                zval_ptr_dtor_nogc(object_ptr);
@@ -38528,14 +38525,17 @@ assign_dim_convert_to_array:
                        if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       EX_CONSTANT(opline->op2);
 assign_dim_error:
 
-
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if (IS_CONST != IS_UNUSED) {
+
+       }
 
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -38573,7 +38573,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_tmp((opline+1)->op1.var, execute_data, &free_op_data);
                value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
@@ -38606,7 +38605,6 @@ try_assign_dim_array:
                        } else {
                                zval_ptr_dtor_nogc(free_op_data);
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_CONST == IS_UNUSED) {
@@ -38618,7 +38616,6 @@ try_assign_dim_array:
                                        dim = EX_CONSTANT(opline->op2);
                                        value = _get_zval_ptr_tmp((opline+1)->op1.var, execute_data, &free_op_data);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-
                                        zval_ptr_dtor_nogc(free_op_data);
                                }
                        } else {
@@ -38634,14 +38631,17 @@ assign_dim_convert_to_array:
                        if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       EX_CONSTANT(opline->op2);
 assign_dim_error:
-
                        zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if (IS_CONST != IS_UNUSED) {
+
+       }
 
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -38679,7 +38679,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_var((opline+1)->op1.var, execute_data, &free_op_data);
                value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
@@ -38712,7 +38711,6 @@ try_assign_dim_array:
                        } else {
                                zval_ptr_dtor_nogc(free_op_data);
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_CONST == IS_UNUSED) {
@@ -38724,7 +38722,6 @@ try_assign_dim_array:
                                        dim = EX_CONSTANT(opline->op2);
                                        value = _get_zval_ptr_var_deref((opline+1)->op1.var, execute_data, &free_op_data);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-
                                        zval_ptr_dtor_nogc(free_op_data);
                                }
                        } else {
@@ -38740,14 +38737,17 @@ assign_dim_convert_to_array:
                        if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       EX_CONSTANT(opline->op2);
 assign_dim_error:
-
                        zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if (IS_CONST != IS_UNUSED) {
+
+       }
 
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -38785,7 +38785,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_cv_BP_VAR_R(execute_data, (opline+1)->op1.var);
                value = zend_assign_to_variable(variable_ptr, value, IS_CV);
@@ -38818,7 +38817,6 @@ try_assign_dim_array:
                        } else {
 
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_CONST == IS_UNUSED) {
@@ -38831,7 +38829,6 @@ try_assign_dim_array:
                                        value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, (opline+1)->op1.var);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
 
-
                                }
                        } else {
                                zval_ptr_dtor_nogc(object_ptr);
@@ -38846,14 +38843,17 @@ assign_dim_convert_to_array:
                        if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       EX_CONSTANT(opline->op2);
 assign_dim_error:
 
-
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if (IS_CONST != IS_UNUSED) {
+
+       }
 
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -41598,7 +41598,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = EX_CONSTANT((opline+1)->op1);
                value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
@@ -41631,7 +41630,6 @@ try_assign_dim_array:
                        } else {
 
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_UNUSED == IS_UNUSED) {
@@ -41644,7 +41642,6 @@ try_assign_dim_array:
                                        value = EX_CONSTANT((opline+1)->op1);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
 
-
                                }
                        } else {
                                zval_ptr_dtor_nogc(object_ptr);
@@ -41659,14 +41656,17 @@ assign_dim_convert_to_array:
                        if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       NULL;
 assign_dim_error:
 
-
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if (IS_UNUSED != IS_UNUSED) {
+
+       }
 
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -41704,7 +41704,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_tmp((opline+1)->op1.var, execute_data, &free_op_data);
                value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
@@ -41737,7 +41736,6 @@ try_assign_dim_array:
                        } else {
                                zval_ptr_dtor_nogc(free_op_data);
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_UNUSED == IS_UNUSED) {
@@ -41749,7 +41747,6 @@ try_assign_dim_array:
                                        dim = NULL;
                                        value = _get_zval_ptr_tmp((opline+1)->op1.var, execute_data, &free_op_data);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-
                                        zval_ptr_dtor_nogc(free_op_data);
                                }
                        } else {
@@ -41765,14 +41762,17 @@ assign_dim_convert_to_array:
                        if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       NULL;
 assign_dim_error:
-
                        zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if (IS_UNUSED != IS_UNUSED) {
+
+       }
 
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -41810,7 +41810,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_var((opline+1)->op1.var, execute_data, &free_op_data);
                value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
@@ -41843,7 +41842,6 @@ try_assign_dim_array:
                        } else {
                                zval_ptr_dtor_nogc(free_op_data);
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_UNUSED == IS_UNUSED) {
@@ -41855,7 +41853,6 @@ try_assign_dim_array:
                                        dim = NULL;
                                        value = _get_zval_ptr_var_deref((opline+1)->op1.var, execute_data, &free_op_data);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-
                                        zval_ptr_dtor_nogc(free_op_data);
                                }
                        } else {
@@ -41871,14 +41868,17 @@ assign_dim_convert_to_array:
                        if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       NULL;
 assign_dim_error:
-
                        zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if (IS_UNUSED != IS_UNUSED) {
+
+       }
 
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -41916,7 +41916,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_cv_BP_VAR_R(execute_data, (opline+1)->op1.var);
                value = zend_assign_to_variable(variable_ptr, value, IS_CV);
@@ -41949,7 +41948,6 @@ try_assign_dim_array:
                        } else {
 
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_UNUSED == IS_UNUSED) {
@@ -41962,7 +41960,6 @@ try_assign_dim_array:
                                        value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, (opline+1)->op1.var);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
 
-
                                }
                        } else {
                                zval_ptr_dtor_nogc(object_ptr);
@@ -41977,14 +41974,17 @@ assign_dim_convert_to_array:
                        if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       NULL;
 assign_dim_error:
 
-
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if (IS_UNUSED != IS_UNUSED) {
+
+       }
 
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -44895,7 +44895,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = EX_CONSTANT((opline+1)->op1);
                value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
@@ -44928,7 +44927,6 @@ try_assign_dim_array:
                        } else {
 
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_CV == IS_UNUSED) {
@@ -44941,7 +44939,6 @@ try_assign_dim_array:
                                        value = EX_CONSTANT((opline+1)->op1);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
 
-
                                }
                        } else {
                                zval_ptr_dtor_nogc(object_ptr);
@@ -44956,14 +44953,17 @@ assign_dim_convert_to_array:
                        if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var);
 assign_dim_error:
 
-
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if (IS_CV != IS_UNUSED) {
+
+       }
 
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -45001,7 +45001,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_tmp((opline+1)->op1.var, execute_data, &free_op_data);
                value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
@@ -45034,7 +45033,6 @@ try_assign_dim_array:
                        } else {
                                zval_ptr_dtor_nogc(free_op_data);
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_CV == IS_UNUSED) {
@@ -45046,7 +45044,6 @@ try_assign_dim_array:
                                        dim = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var);
                                        value = _get_zval_ptr_tmp((opline+1)->op1.var, execute_data, &free_op_data);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-
                                        zval_ptr_dtor_nogc(free_op_data);
                                }
                        } else {
@@ -45062,14 +45059,17 @@ assign_dim_convert_to_array:
                        if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var);
 assign_dim_error:
-
                        zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if (IS_CV != IS_UNUSED) {
+
+       }
 
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -45107,7 +45107,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_var((opline+1)->op1.var, execute_data, &free_op_data);
                value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
@@ -45140,7 +45139,6 @@ try_assign_dim_array:
                        } else {
                                zval_ptr_dtor_nogc(free_op_data);
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_CV == IS_UNUSED) {
@@ -45152,7 +45150,6 @@ try_assign_dim_array:
                                        dim = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var);
                                        value = _get_zval_ptr_var_deref((opline+1)->op1.var, execute_data, &free_op_data);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-
                                        zval_ptr_dtor_nogc(free_op_data);
                                }
                        } else {
@@ -45168,14 +45165,17 @@ assign_dim_convert_to_array:
                        if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var);
 assign_dim_error:
-
                        zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if (IS_CV != IS_UNUSED) {
+
+       }
 
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -45213,7 +45213,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-
                }
                value = _get_zval_ptr_cv_BP_VAR_R(execute_data, (opline+1)->op1.var);
                value = zend_assign_to_variable(variable_ptr, value, IS_CV);
@@ -45246,7 +45245,6 @@ try_assign_dim_array:
                        } else {
 
                        }
-
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if (IS_CV == IS_UNUSED) {
@@ -45259,7 +45257,6 @@ try_assign_dim_array:
                                        value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, (opline+1)->op1.var);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
 
-
                                }
                        } else {
                                zval_ptr_dtor_nogc(object_ptr);
@@ -45274,14 +45271,17 @@ assign_dim_convert_to_array:
                        if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var);
 assign_dim_error:
 
-
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if (IS_CV != IS_UNUSED) {
+
+       }
 
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -48496,7 +48496,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-                       zval_ptr_dtor_nogc(free_op2);
                }
                value = EX_CONSTANT((opline+1)->op1);
                value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
@@ -48529,7 +48528,6 @@ try_assign_dim_array:
                        } else {
 
                        }
-                       zval_ptr_dtor_nogc(free_op2);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
@@ -48541,7 +48539,6 @@ try_assign_dim_array:
                                        dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
                                        value = EX_CONSTANT((opline+1)->op1);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-                                       zval_ptr_dtor_nogc(free_op2);
 
                                }
                        } else {
@@ -48557,14 +48554,17 @@ assign_dim_convert_to_array:
                        if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
 assign_dim_error:
-                       zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
 
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
+               zval_ptr_dtor_nogc(free_op2);
+       }
 
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -48602,7 +48602,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-                       zval_ptr_dtor_nogc(free_op2);
                }
                value = _get_zval_ptr_tmp((opline+1)->op1.var, execute_data, &free_op_data);
                value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
@@ -48635,7 +48634,6 @@ try_assign_dim_array:
                        } else {
                                zval_ptr_dtor_nogc(free_op_data);
                        }
-                       zval_ptr_dtor_nogc(free_op2);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
@@ -48647,7 +48645,6 @@ try_assign_dim_array:
                                        dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
                                        value = _get_zval_ptr_tmp((opline+1)->op1.var, execute_data, &free_op_data);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-                                       zval_ptr_dtor_nogc(free_op2);
                                        zval_ptr_dtor_nogc(free_op_data);
                                }
                        } else {
@@ -48663,14 +48660,17 @@ assign_dim_convert_to_array:
                        if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
 assign_dim_error:
-                       zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
                        zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
+               zval_ptr_dtor_nogc(free_op2);
+       }
 
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -48708,7 +48708,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-                       zval_ptr_dtor_nogc(free_op2);
                }
                value = _get_zval_ptr_var((opline+1)->op1.var, execute_data, &free_op_data);
                value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
@@ -48741,7 +48740,6 @@ try_assign_dim_array:
                        } else {
                                zval_ptr_dtor_nogc(free_op_data);
                        }
-                       zval_ptr_dtor_nogc(free_op2);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
@@ -48753,7 +48751,6 @@ try_assign_dim_array:
                                        dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
                                        value = _get_zval_ptr_var_deref((opline+1)->op1.var, execute_data, &free_op_data);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-                                       zval_ptr_dtor_nogc(free_op2);
                                        zval_ptr_dtor_nogc(free_op_data);
                                }
                        } else {
@@ -48769,14 +48766,17 @@ assign_dim_convert_to_array:
                        if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
 assign_dim_error:
-                       zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
                        zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
+               zval_ptr_dtor_nogc(free_op2);
+       }
 
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);
@@ -48814,7 +48814,6 @@ try_assign_dim_array:
                        if (UNEXPECTED(variable_ptr == NULL)) {
                                goto assign_dim_error;
                        }
-                       zval_ptr_dtor_nogc(free_op2);
                }
                value = _get_zval_ptr_cv_BP_VAR_R(execute_data, (opline+1)->op1.var);
                value = zend_assign_to_variable(variable_ptr, value, IS_CV);
@@ -48847,7 +48846,6 @@ try_assign_dim_array:
                        } else {
 
                        }
-                       zval_ptr_dtor_nogc(free_op2);
                } else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
                        if (EXPECTED(Z_STRLEN_P(object_ptr) != 0)) {
                                if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
@@ -48859,7 +48857,6 @@ try_assign_dim_array:
                                        dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
                                        value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, (opline+1)->op1.var);
                                        zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
-                                       zval_ptr_dtor_nogc(free_op2);
 
                                }
                        } else {
@@ -48875,14 +48872,17 @@ assign_dim_convert_to_array:
                        if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) {
                                zend_error(E_WARNING, "Cannot use a scalar value as an array");
                        }
+                       _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2);
 assign_dim_error:
-                       zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
 
                        if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
                                ZVAL_NULL(EX_VAR(opline->result.var));
                        }
                }
        }
+       if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
+               zval_ptr_dtor_nogc(free_op2);
+       }
 
        /* assign_dim has two opcodes! */
        ZEND_VM_NEXT_OPCODE_EX(1, 2);