diff options
author | Dmitry Stogov <dmitry@zend.com> | 2016-06-09 12:39:38 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2016-06-09 12:39:38 +0300 |
commit | e7e79aa409d2b92bf2bcbe0fcdcaf1a9820903f2 (patch) | |
tree | 0cf4fbd1b517986fd007bb3b9bd0a84ac0fe6f39 /Zend | |
parent | 4138db014c5c7159bba10e94e36f2c317bf93265 (diff) | |
download | php-git-e7e79aa409d2b92bf2bcbe0fcdcaf1a9820903f2.tar.gz |
Delay IS_ERROR checks
Diffstat (limited to 'Zend')
-rw-r--r-- | Zend/zend_execute.c | 17 | ||||
-rw-r--r-- | Zend/zend_vm_def.h | 20 | ||||
-rw-r--r-- | Zend/zend_vm_execute.h | 544 |
3 files changed, 188 insertions, 393 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 683f674d96..b2769ad6fb 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1950,11 +1950,6 @@ static zend_always_inline void zend_fetch_property_address(zval *result, zval *c { if (container_op_type != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { do { - if (container_op_type == IS_VAR && UNEXPECTED(Z_ISERROR_P(container))) { - ZVAL_ERROR(result); - return; - } - if (Z_ISREF_P(container)) { container = Z_REFVAL_P(container); if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) { @@ -1969,7 +1964,9 @@ static zend_always_inline void zend_fetch_property_address(zval *result, zval *c zval_ptr_dtor_nogc(container); object_init(container); } else { - zend_error(E_WARNING, "Attempt to modify property of non-object"); + if (container_op_type != IS_VAR || EXPECTED(!Z_ISERROR_P(container))) { + zend_error(E_WARNING, "Attempt to modify property of non-object"); + } ZVAL_ERROR(result); return; } @@ -2005,6 +2002,7 @@ static zend_always_inline void zend_fetch_property_address(zval *result, zval *c zval *ptr = Z_OBJ_HT_P(container)->get_property_ptr_ptr(container, prop_ptr, type, cache_slot); if (NULL == ptr) { if (EXPECTED(Z_OBJ_HT_P(container)->read_property)) { +use_read_property: ptr = Z_OBJ_HT_P(container)->read_property(container, prop_ptr, type, cache_slot, result); if (ptr != result) { ZVAL_INDIRECT(result, ptr); @@ -2019,12 +2017,7 @@ static zend_always_inline void zend_fetch_property_address(zval *result, zval *c ZVAL_INDIRECT(result, ptr); } } else if (EXPECTED(Z_OBJ_HT_P(container)->read_property)) { - zval *ptr = Z_OBJ_HT_P(container)->read_property(container, prop_ptr, type, cache_slot, result); - if (ptr != result) { - ZVAL_INDIRECT(result, ptr); - } else if (UNEXPECTED(Z_ISREF_P(ptr) && Z_REFCOUNT_P(ptr) == 1)) { - ZVAL_UNREF(ptr); - } + goto use_read_property; } else { zend_error(E_WARNING, "This object doesn't support property references"); ZVAL_ERROR(result); diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 2a29ff744f..331ebdb85d 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -839,11 +839,10 @@ ZEND_VM_C_LABEL(assign_dim_op_convert_to_array): zend_check_string_offset(dim, BP_VAR_RW); zend_wrong_string_offset(); } + } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { + ZEND_VM_C_GOTO(assign_dim_op_convert_to_array); } else { - if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { - ZEND_VM_C_GOTO(assign_dim_op_convert_to_array); - } - if (UNEXPECTED(OP1_TYPE != IS_VAR || !Z_ISERROR_P(container))) { + if (UNEXPECTED(OP1_TYPE != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } ZEND_VM_C_LABEL(assign_dim_op_ret_null): @@ -2159,13 +2158,6 @@ ZEND_VM_HANDLER(136, ZEND_ASSIGN_OBJ, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, SPEC( if (OP1_TYPE != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (OP1_TYPE == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - FREE_OP_DATA(); - ZEND_VM_C_GOTO(exit_assign_obj); - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -2192,7 +2184,9 @@ ZEND_VM_HANDLER(136, ZEND_ASSIGN_OBJ, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, SPEC( } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (OP1_TYPE != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -2373,7 +2367,7 @@ ZEND_VM_C_LABEL(try_assign_dim_array): zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); ZEND_VM_C_GOTO(try_assign_dim_array); } else { - if (OP1_TYPE != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (OP1_TYPE != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = GET_OP2_ZVAL_PTR(BP_VAR_R); diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 25769073af..ca5b343cf5 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -17170,11 +17170,10 @@ assign_dim_op_convert_to_array: zend_check_string_offset(dim, BP_VAR_RW); zend_wrong_string_offset(); } + } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { + goto assign_dim_op_convert_to_array; } else { - if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { - goto assign_dim_op_convert_to_array; - } - if (UNEXPECTED(IS_VAR != IS_VAR || !Z_ISERROR_P(container))) { + if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } assign_dim_op_ret_null: @@ -18389,13 +18388,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_D if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -18422,7 +18414,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_D } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -18550,13 +18544,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_D if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -18583,7 +18570,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_D } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -18711,13 +18700,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_D if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -18744,7 +18726,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_D } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -18872,13 +18856,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_D if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -18905,7 +18882,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_D } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -19085,7 +19064,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = EX_CONSTANT(opline->op2); @@ -19177,7 +19156,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = EX_CONSTANT(opline->op2); @@ -19269,7 +19248,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = EX_CONSTANT(opline->op2); @@ -19360,7 +19339,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = EX_CONSTANT(opline->op2); @@ -20655,11 +20634,10 @@ assign_dim_op_convert_to_array: zend_check_string_offset(dim, BP_VAR_RW); zend_wrong_string_offset(); } + } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { + goto assign_dim_op_convert_to_array; } else { - if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { - goto assign_dim_op_convert_to_array; - } - if (UNEXPECTED(IS_VAR != IS_VAR || !Z_ISERROR_P(container))) { + if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } assign_dim_op_ret_null: @@ -21061,7 +21039,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = NULL; @@ -21153,7 +21131,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = NULL; @@ -21245,7 +21223,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = NULL; @@ -21336,7 +21314,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = NULL; @@ -22018,11 +21996,10 @@ assign_dim_op_convert_to_array: zend_check_string_offset(dim, BP_VAR_RW); zend_wrong_string_offset(); } + } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { + goto assign_dim_op_convert_to_array; } else { - if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { - goto assign_dim_op_convert_to_array; - } - if (UNEXPECTED(IS_VAR != IS_VAR || !Z_ISERROR_P(container))) { + if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } assign_dim_op_ret_null: @@ -23237,13 +23214,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -23270,7 +23240,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -23398,13 +23370,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -23431,7 +23396,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -23559,13 +23526,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -23592,7 +23552,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -23720,13 +23682,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -23753,7 +23708,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -23933,7 +23890,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var); @@ -24025,7 +23982,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var); @@ -24117,7 +24074,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var); @@ -24208,7 +24165,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var); @@ -25028,11 +24985,10 @@ assign_dim_op_convert_to_array: zend_check_string_offset(dim, BP_VAR_RW); zend_wrong_string_offset(); } + } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { + goto assign_dim_op_convert_to_array; } else { - if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { - goto assign_dim_op_convert_to_array; - } - if (UNEXPECTED(IS_VAR != IS_VAR || !Z_ISERROR_P(container))) { + if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } assign_dim_op_ret_null: @@ -26252,13 +26208,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_ if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -26285,7 +26234,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_ } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -26413,13 +26364,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_ if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -26446,7 +26390,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_ } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -26574,13 +26520,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_ if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -26607,7 +26546,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_ } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -26735,13 +26676,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_ if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -26768,7 +26702,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_ } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -26948,7 +26884,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2); @@ -27040,7 +26976,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2); @@ -27132,7 +27068,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2); @@ -27223,7 +27159,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_VAR != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2); @@ -27969,11 +27905,10 @@ assign_dim_op_convert_to_array: zend_check_string_offset(dim, BP_VAR_RW); zend_wrong_string_offset(); } + } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { + goto assign_dim_op_convert_to_array; } else { - if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { - goto assign_dim_op_convert_to_array; - } - if (UNEXPECTED(IS_UNUSED != IS_VAR || !Z_ISERROR_P(container))) { + if (UNEXPECTED(IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } assign_dim_op_ret_null: @@ -28899,13 +28834,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_O if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -28932,7 +28860,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_O } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -29060,13 +28990,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_O if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -29093,7 +29016,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_O } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -29221,13 +29146,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_O if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -29254,7 +29172,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_O } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -29382,13 +29302,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_O if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -29415,7 +29328,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_O } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -30794,11 +30709,10 @@ assign_dim_op_convert_to_array: zend_check_string_offset(dim, BP_VAR_RW); zend_wrong_string_offset(); } + } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { + goto assign_dim_op_convert_to_array; } else { - if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { - goto assign_dim_op_convert_to_array; - } - if (UNEXPECTED(IS_UNUSED != IS_VAR || !Z_ISERROR_P(container))) { + if (UNEXPECTED(IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } assign_dim_op_ret_null: @@ -31574,11 +31488,10 @@ assign_dim_op_convert_to_array: zend_check_string_offset(dim, BP_VAR_RW); zend_wrong_string_offset(); } + } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { + goto assign_dim_op_convert_to_array; } else { - if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { - goto assign_dim_op_convert_to_array; - } - if (UNEXPECTED(IS_UNUSED != IS_VAR || !Z_ISERROR_P(container))) { + if (UNEXPECTED(IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } assign_dim_op_ret_null: @@ -32504,13 +32417,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_D if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -32537,7 +32443,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_D } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -32665,13 +32573,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_D if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -32698,7 +32599,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_D } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -32826,13 +32729,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_D if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -32859,7 +32755,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_D } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -32987,13 +32885,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_D if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -33020,7 +32911,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_D } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -34067,11 +33960,10 @@ assign_dim_op_convert_to_array: zend_check_string_offset(dim, BP_VAR_RW); zend_wrong_string_offset(); } + } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { + goto assign_dim_op_convert_to_array; } else { - if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { - goto assign_dim_op_convert_to_array; - } - if (UNEXPECTED(IS_UNUSED != IS_VAR || !Z_ISERROR_P(container))) { + if (UNEXPECTED(IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } assign_dim_op_ret_null: @@ -35002,13 +34894,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_ if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -35035,7 +34920,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_ } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -35163,13 +35050,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_ if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -35196,7 +35076,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_ } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -35324,13 +35206,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_ if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -35357,7 +35232,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_ } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -35485,13 +35362,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_ if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -35518,7 +35388,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_ } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -38822,11 +38694,10 @@ assign_dim_op_convert_to_array: zend_check_string_offset(dim, BP_VAR_RW); zend_wrong_string_offset(); } + } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { + goto assign_dim_op_convert_to_array; } else { - if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { - goto assign_dim_op_convert_to_array; - } - if (UNEXPECTED(IS_CV != IS_VAR || !Z_ISERROR_P(container))) { + if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } assign_dim_op_ret_null: @@ -40315,13 +40186,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DA if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -40348,7 +40212,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DA } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -40476,13 +40342,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DA if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -40509,7 +40368,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DA } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -40637,13 +40498,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DA if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -40670,7 +40524,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DA } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -40798,13 +40654,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DA if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -40831,7 +40680,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DA } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -41011,7 +40862,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = EX_CONSTANT(opline->op2); @@ -41103,7 +40954,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = EX_CONSTANT(opline->op2); @@ -41195,7 +41046,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = EX_CONSTANT(opline->op2); @@ -41286,7 +41137,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = EX_CONSTANT(opline->op2); @@ -43496,11 +43347,10 @@ assign_dim_op_convert_to_array: zend_check_string_offset(dim, BP_VAR_RW); zend_wrong_string_offset(); } + } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { + goto assign_dim_op_convert_to_array; } else { - if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { - goto assign_dim_op_convert_to_array; - } - if (UNEXPECTED(IS_CV != IS_VAR || !Z_ISERROR_P(container))) { + if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } assign_dim_op_ret_null: @@ -44164,7 +44014,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = NULL; @@ -44256,7 +44106,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = NULL; @@ -44348,7 +44198,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = NULL; @@ -44439,7 +44289,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = NULL; @@ -45852,11 +45702,10 @@ assign_dim_op_convert_to_array: zend_check_string_offset(dim, BP_VAR_RW); zend_wrong_string_offset(); } + } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { + goto assign_dim_op_convert_to_array; } else { - if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { - goto assign_dim_op_convert_to_array; - } - if (UNEXPECTED(IS_CV != IS_VAR || !Z_ISERROR_P(container))) { + if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } assign_dim_op_ret_null: @@ -47206,13 +47055,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -47239,7 +47081,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_ } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -47367,13 +47211,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -47400,7 +47237,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_ } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -47528,13 +47367,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -47561,7 +47393,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_ } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -47689,13 +47523,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_ if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -47722,7 +47549,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_ } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -47902,7 +47731,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var); @@ -47994,7 +47823,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var); @@ -48086,7 +47915,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var); @@ -48177,7 +48006,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var); @@ -49935,11 +49764,10 @@ assign_dim_op_convert_to_array: zend_check_string_offset(dim, BP_VAR_RW); zend_wrong_string_offset(); } + } else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { + goto assign_dim_op_convert_to_array; } else { - if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) { - goto assign_dim_op_convert_to_array; - } - if (UNEXPECTED(IS_CV != IS_VAR || !Z_ISERROR_P(container))) { + if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } assign_dim_op_ret_null: @@ -51295,13 +51123,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_D if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -51328,7 +51149,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_D } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -51456,13 +51279,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_D if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -51489,7 +51305,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_D } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -51617,13 +51435,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_D if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - zval_ptr_dtor_nogc(free_op_data); - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -51650,7 +51461,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_D } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -51778,13 +51591,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_D if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) { do { - if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(object))) { - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { - ZVAL_NULL(EX_VAR(opline->result.var)); - } - - goto exit_assign_obj; - } if (Z_ISREF_P(object)) { object = Z_REFVAL_P(object); if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) { @@ -51811,7 +51617,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_D } Z_DELREF_P(object); } else { - zend_error(E_WARNING, "Attempt to assign property of non-object"); + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) { + zend_error(E_WARNING, "Attempt to assign property of non-object"); + } if (UNEXPECTED(RETURN_VALUE_USED(opline))) { ZVAL_NULL(EX_VAR(opline->result.var)); } @@ -51991,7 +51799,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2); @@ -52083,7 +51891,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2); @@ -52175,7 +51983,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2); @@ -52266,7 +52074,7 @@ try_assign_dim_array: zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0); goto try_assign_dim_array; } else { - if (IS_CV != IS_VAR || UNEXPECTED(!Z_ISERROR_P(object_ptr))) { + if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) { zend_error(E_WARNING, "Cannot use a scalar value as an array"); } dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2); |