summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_vm_def.h11
-rw-r--r--Zend/zend_vm_execute.h88
2 files changed, 45 insertions, 54 deletions
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 3cdd3d6619..ecb8064efe 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -903,11 +903,6 @@ ZEND_VM_C_LABEL(assign_dim_op_new_array):
if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
ZEND_VM_C_GOTO(assign_dim_op_array);
}
- } else if (OP1_TYPE == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
- container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
-ZEND_VM_C_LABEL(assign_dim_op_convert_to_array):
- ZVAL_ARR(container, zend_new_array(8));
- ZEND_VM_C_GOTO(assign_dim_op_new_array);
}
dim = GET_OP2_ZVAL_PTR(BP_VAR_R);
@@ -928,7 +923,11 @@ ZEND_VM_C_LABEL(assign_dim_op_convert_to_array):
}
UNDEF_RESULT();
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
- ZEND_VM_C_GOTO(assign_dim_op_convert_to_array);
+ if (OP1_TYPE == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
+ container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
+ }
+ ZVAL_ARR(container, zend_new_array(8));
+ ZEND_VM_C_GOTO(assign_dim_op_new_array);
} else {
if (UNEXPECTED(OP1_TYPE != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
zend_use_scalar_as_array();
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index a7ce7d1f17..31fdb9b32d 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -21899,11 +21899,6 @@ assign_dim_op_new_array:
if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
goto assign_dim_op_array;
}
- } else if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
- container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
-assign_dim_op_convert_to_array:
- ZVAL_ARR(container, zend_new_array(8));
- goto assign_dim_op_new_array;
}
dim = RT_CONSTANT(opline, opline->op2);
@@ -21924,7 +21919,11 @@ assign_dim_op_convert_to_array:
}
UNDEF_RESULT();
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
- goto assign_dim_op_convert_to_array;
+ if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
+ container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
+ }
+ ZVAL_ARR(container, zend_new_array(8));
+ goto assign_dim_op_new_array;
} else {
if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
zend_use_scalar_as_array();
@@ -24229,11 +24228,6 @@ assign_dim_op_new_array:
if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
goto assign_dim_op_array;
}
- } else if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
- container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
-assign_dim_op_convert_to_array:
- ZVAL_ARR(container, zend_new_array(8));
- goto assign_dim_op_new_array;
}
dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
@@ -24254,7 +24248,11 @@ assign_dim_op_convert_to_array:
}
UNDEF_RESULT();
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
- goto assign_dim_op_convert_to_array;
+ if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
+ container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
+ }
+ ZVAL_ARR(container, zend_new_array(8));
+ goto assign_dim_op_new_array;
} else {
if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
zend_use_scalar_as_array();
@@ -26710,11 +26708,6 @@ assign_dim_op_new_array:
if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
goto assign_dim_op_array;
}
- } else if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
- container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
-assign_dim_op_convert_to_array:
- ZVAL_ARR(container, zend_new_array(8));
- goto assign_dim_op_new_array;
}
dim = NULL;
@@ -26735,7 +26728,11 @@ assign_dim_op_convert_to_array:
}
UNDEF_RESULT();
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
- goto assign_dim_op_convert_to_array;
+ if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
+ container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
+ }
+ ZVAL_ARR(container, zend_new_array(8));
+ goto assign_dim_op_new_array;
} else {
if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
zend_use_scalar_as_array();
@@ -28092,11 +28089,6 @@ assign_dim_op_new_array:
if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
goto assign_dim_op_array;
}
- } else if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
- container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
-assign_dim_op_convert_to_array:
- ZVAL_ARR(container, zend_new_array(8));
- goto assign_dim_op_new_array;
}
dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
@@ -28117,7 +28109,11 @@ assign_dim_op_convert_to_array:
}
UNDEF_RESULT();
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
- goto assign_dim_op_convert_to_array;
+ if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
+ container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
+ }
+ ZVAL_ARR(container, zend_new_array(8));
+ goto assign_dim_op_new_array;
} else {
if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
zend_use_scalar_as_array();
@@ -38562,11 +38558,6 @@ assign_dim_op_new_array:
if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
goto assign_dim_op_array;
}
- } else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
- container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
-assign_dim_op_convert_to_array:
- ZVAL_ARR(container, zend_new_array(8));
- goto assign_dim_op_new_array;
}
dim = RT_CONSTANT(opline, opline->op2);
@@ -38587,7 +38578,11 @@ assign_dim_op_convert_to_array:
}
UNDEF_RESULT();
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
- goto assign_dim_op_convert_to_array;
+ if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
+ container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
+ }
+ ZVAL_ARR(container, zend_new_array(8));
+ goto assign_dim_op_new_array;
} else {
if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
zend_use_scalar_as_array();
@@ -42403,11 +42398,6 @@ assign_dim_op_new_array:
if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
goto assign_dim_op_array;
}
- } else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
- container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
-assign_dim_op_convert_to_array:
- ZVAL_ARR(container, zend_new_array(8));
- goto assign_dim_op_new_array;
}
dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
@@ -42428,7 +42418,11 @@ assign_dim_op_convert_to_array:
}
UNDEF_RESULT();
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
- goto assign_dim_op_convert_to_array;
+ if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
+ container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
+ }
+ ZVAL_ARR(container, zend_new_array(8));
+ goto assign_dim_op_new_array;
} else {
if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
zend_use_scalar_as_array();
@@ -45632,11 +45626,6 @@ assign_dim_op_new_array:
if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
goto assign_dim_op_array;
}
- } else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
- container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
-assign_dim_op_convert_to_array:
- ZVAL_ARR(container, zend_new_array(8));
- goto assign_dim_op_new_array;
}
dim = NULL;
@@ -45657,7 +45646,11 @@ assign_dim_op_convert_to_array:
}
UNDEF_RESULT();
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
- goto assign_dim_op_convert_to_array;
+ if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
+ container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
+ }
+ ZVAL_ARR(container, zend_new_array(8));
+ goto assign_dim_op_new_array;
} else {
if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
zend_use_scalar_as_array();
@@ -48105,11 +48098,6 @@ assign_dim_op_new_array:
if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
goto assign_dim_op_array;
}
- } else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
- container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
-assign_dim_op_convert_to_array:
- ZVAL_ARR(container, zend_new_array(8));
- goto assign_dim_op_new_array;
}
dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
@@ -48130,7 +48118,11 @@ assign_dim_op_convert_to_array:
}
UNDEF_RESULT();
} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
- goto assign_dim_op_convert_to_array;
+ if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
+ container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
+ }
+ ZVAL_ARR(container, zend_new_array(8));
+ goto assign_dim_op_new_array;
} else {
if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
zend_use_scalar_as_array();