Skip to content

Commit 87edeed

Browse files
mvorisekiluuu1994
authored andcommitted
Remove UNEXPECTED from typed prop checks
Closes GH-13143
1 parent 2289af8 commit 87edeed

File tree

7 files changed

+85
-85
lines changed

7 files changed

+85
-85
lines changed

Zend/zend_API.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1675,7 +1675,7 @@ ZEND_API void object_properties_init_ex(zend_object *object, HashTable *properti
16751675
(property_info->flags & ZEND_ACC_STATIC) == 0) {
16761676
zval *slot = OBJ_PROP(object, property_info->offset);
16771677

1678-
if (UNEXPECTED(ZEND_TYPE_IS_SET(property_info->type))) {
1678+
if (ZEND_TYPE_IS_SET(property_info->type)) {
16791679
zval tmp;
16801680

16811681
ZVAL_COPY_VALUE(&tmp, prop);

Zend/zend_execute.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2000,7 +2000,7 @@ static void zend_pre_incdec_property_zval(zval *prop, zend_property_info *prop_i
20002000
} else {
20012001
fast_long_decrement_function(prop);
20022002
}
2003-
if (UNEXPECTED(Z_TYPE_P(prop) != IS_LONG) && UNEXPECTED(prop_info)
2003+
if (UNEXPECTED(Z_TYPE_P(prop) != IS_LONG) && prop_info
20042004
&& !(ZEND_TYPE_FULL_MASK(prop_info->type) & MAY_BE_DOUBLE)) {
20052005
zend_long val = zend_throw_incdec_prop_error(prop_info OPLINE_CC);
20062006
ZVAL_LONG(prop, val);
@@ -2016,7 +2016,7 @@ static void zend_pre_incdec_property_zval(zval *prop, zend_property_info *prop_i
20162016
}
20172017
}
20182018

2019-
if (UNEXPECTED(prop_info)) {
2019+
if (prop_info) {
20202020
zend_incdec_typed_prop(prop_info, prop, NULL OPLINE_CC EXECUTE_DATA_CC);
20212021
} else if (ZEND_IS_INCREMENT(opline->opcode)) {
20222022
increment_function(prop);
@@ -2039,7 +2039,7 @@ static void zend_post_incdec_property_zval(zval *prop, zend_property_info *prop_
20392039
} else {
20402040
fast_long_decrement_function(prop);
20412041
}
2042-
if (UNEXPECTED(Z_TYPE_P(prop) != IS_LONG) && UNEXPECTED(prop_info)
2042+
if (UNEXPECTED(Z_TYPE_P(prop) != IS_LONG) && prop_info
20432043
&& !(ZEND_TYPE_FULL_MASK(prop_info->type) & MAY_BE_DOUBLE)) {
20442044
zend_long val = zend_throw_incdec_prop_error(prop_info OPLINE_CC);
20452045
ZVAL_LONG(prop, val);
@@ -2054,7 +2054,7 @@ static void zend_post_incdec_property_zval(zval *prop, zend_property_info *prop_
20542054
}
20552055
}
20562056

2057-
if (UNEXPECTED(prop_info)) {
2057+
if (prop_info) {
20582058
zend_incdec_typed_prop(prop_info, prop, EX_VAR(opline->result.var) OPLINE_CC EXECUTE_DATA_CC);
20592059
} else {
20602060
ZVAL_COPY(EX_VAR(opline->result.var), prop);
@@ -3310,7 +3310,7 @@ static zend_always_inline void zend_assign_to_property_reference(zval *container
33103310
prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr);
33113311
}
33123312

3313-
if (UNEXPECTED(prop_info)) {
3313+
if (prop_info) {
33143314
variable_ptr = zend_assign_to_typed_property_reference(prop_info, variable_ptr, value_ptr, &garbage EXECUTE_DATA_CC);
33153315
} else {
33163316
zend_assign_to_variable_reference(variable_ptr, value_ptr, &garbage);
@@ -3442,7 +3442,7 @@ static zend_always_inline zend_result zend_fetch_static_property_address(zval **
34423442

34433443
if ((fetch_type == BP_VAR_R || fetch_type == BP_VAR_RW)
34443444
&& UNEXPECTED(Z_TYPE_P(*retval) == IS_UNDEF)
3445-
&& UNEXPECTED(ZEND_TYPE_IS_SET(property_info->type))) {
3445+
&& ZEND_TYPE_IS_SET(property_info->type)) {
34463446
zend_throw_error(NULL, "Typed static property %s::$%s must not be accessed before initialization",
34473447
ZSTR_VAL(property_info->ce->name),
34483448
zend_get_unmangled_property_name(property_info->name));

Zend/zend_inheritance.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1318,7 +1318,7 @@ static void do_inherit_property(zend_property_info *parent_info, zend_string *ke
13181318
child_info->offset = parent_info->offset;
13191319
}
13201320

1321-
if (UNEXPECTED(ZEND_TYPE_IS_SET(parent_info->type))) {
1321+
if (ZEND_TYPE_IS_SET(parent_info->type)) {
13221322
inheritance_status status = property_types_compatible(parent_info, child_info);
13231323
if (status == INHERITANCE_ERROR) {
13241324
emit_incompatible_property_error(child_info, parent_info);
@@ -1751,7 +1751,7 @@ static bool do_inherit_constant_check(
17511751
);
17521752
}
17531753

1754-
if (!(ZEND_CLASS_CONST_FLAGS(parent_constant) & ZEND_ACC_PRIVATE) && UNEXPECTED(ZEND_TYPE_IS_SET(parent_constant->type))) {
1754+
if (!(ZEND_CLASS_CONST_FLAGS(parent_constant) & ZEND_ACC_PRIVATE) && ZEND_TYPE_IS_SET(parent_constant->type)) {
17551755
inheritance_status status = class_constant_types_compatible(parent_constant, child_constant);
17561756
if (status == INHERITANCE_ERROR) {
17571757
emit_incompatible_class_constant_error(child_constant, parent_constant, name);

Zend/zend_object_handlers.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -741,7 +741,7 @@ ZEND_API zval *zend_std_read_property(zend_object *zobj, zend_string *name, int
741741
retval = &EG(uninitialized_zval);
742742
}
743743

744-
if (UNEXPECTED(prop_info)) {
744+
if (prop_info) {
745745
zend_verify_prop_assignable_by_ref_ex(prop_info, retval, (zobj->ce->__get->common.fn_flags & ZEND_ACC_STRICT_TYPES) != 0, ZEND_VERIFY_PROP_ASSIGNABLE_BY_REF_CONTEXT_MAGIC_GET);
746746
}
747747

@@ -758,7 +758,7 @@ ZEND_API zval *zend_std_read_property(zend_object *zobj, zend_string *name, int
758758

759759
uninit_error:
760760
if (type != BP_VAR_IS) {
761-
if (UNEXPECTED(prop_info)) {
761+
if (prop_info) {
762762
zend_throw_error(NULL, "Typed property %s::$%s must not be accessed before initialization",
763763
ZSTR_VAL(prop_info->ce->name),
764764
ZSTR_VAL(name));
@@ -826,7 +826,7 @@ ZEND_API zval *zend_std_write_property(zend_object *zobj, zend_string *name, zva
826826
if (Z_TYPE_P(variable_ptr) != IS_UNDEF) {
827827
Z_TRY_ADDREF_P(value);
828828

829-
if (UNEXPECTED(prop_info)) {
829+
if (prop_info) {
830830
if (UNEXPECTED((prop_info->flags & ZEND_ACC_READONLY) && !(Z_PROP_FLAG_P(variable_ptr) & IS_PROP_REINITABLE))) {
831831
Z_TRY_DELREF_P(value);
832832
zend_readonly_property_modification_error(prop_info);
@@ -929,7 +929,7 @@ found:;
929929
variable_ptr = OBJ_PROP(zobj, property_offset);
930930

931931
Z_TRY_ADDREF_P(value);
932-
if (UNEXPECTED(prop_info)) {
932+
if (prop_info) {
933933
if (UNEXPECTED((prop_info->flags & ZEND_ACC_READONLY)
934934
&& !verify_readonly_initialization_access(prop_info, zobj->ce, name, "initialize"))) {
935935
Z_TRY_DELREF_P(value);
@@ -1110,7 +1110,7 @@ ZEND_API zval *zend_std_get_property_ptr_ptr(zend_object *zobj, zend_string *nam
11101110
UNEXPECTED((*zend_get_property_guard(zobj, name)) & IN_GET) ||
11111111
UNEXPECTED(prop_info && (Z_PROP_FLAG_P(retval) & IS_PROP_UNINIT))) {
11121112
if (UNEXPECTED(type == BP_VAR_RW || type == BP_VAR_R)) {
1113-
if (UNEXPECTED(prop_info)) {
1113+
if (prop_info) {
11141114
zend_throw_error(NULL,
11151115
"Typed property %s::$%s must not be accessed before initialization",
11161116
ZSTR_VAL(prop_info->ce->name),

Zend/zend_vm_def.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1074,7 +1074,7 @@ ZEND_VM_C_LABEL(assign_op_object):
10741074
} else {
10751075
prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(object), orig_zptr);
10761076
}
1077-
if (UNEXPECTED(prop_info)) {
1077+
if (prop_info) {
10781078
/* special case for typed properties */
10791079
zend_binary_assign_op_typed_prop(prop_info, zptr, value OPLINE_CC EXECUTE_DATA_CC);
10801080
} else {
@@ -1131,7 +1131,7 @@ ZEND_VM_HANDLER(29, ZEND_ASSIGN_STATIC_PROP_OP, ANY, ANY, OP)
11311131
}
11321132
}
11331133

1134-
if (UNEXPECTED(ZEND_TYPE_IS_SET(prop_info->type))) {
1134+
if (ZEND_TYPE_IS_SET(prop_info->type)) {
11351135
/* special case for typed properties */
11361136
zend_binary_assign_op_typed_prop(prop_info, prop, value OPLINE_CC EXECUTE_DATA_CC);
11371137
} else {
@@ -2417,7 +2417,7 @@ ZEND_VM_C_LABEL(assign_object):
24172417
if (Z_TYPE_P(property_val) != IS_UNDEF) {
24182418
zend_property_info *prop_info = (zend_property_info*) CACHED_PTR_EX(cache_slot + 2);
24192419

2420-
if (UNEXPECTED(prop_info != NULL)) {
2420+
if (prop_info != NULL) {
24212421
value = zend_assign_to_typed_prop(prop_info, property_val, value, &garbage EXECUTE_DATA_CC);
24222422
ZEND_VM_C_GOTO(free_and_exit_assign_obj);
24232423
} else {
@@ -2533,7 +2533,7 @@ ZEND_VM_HANDLER(25, ZEND_ASSIGN_STATIC_PROP, ANY, ANY, CACHE_SLOT, SPEC(OP_DATA=
25332533

25342534
value = GET_OP_DATA_ZVAL_PTR(BP_VAR_R);
25352535

2536-
if (UNEXPECTED(ZEND_TYPE_IS_SET(prop_info->type))) {
2536+
if (ZEND_TYPE_IS_SET(prop_info->type)) {
25372537
value = zend_assign_to_typed_prop(prop_info, prop, value, &garbage EXECUTE_DATA_CC);
25382538
FREE_OP_DATA();
25392539
} else {
@@ -2831,7 +2831,7 @@ ZEND_VM_HANDLER(33, ZEND_ASSIGN_STATIC_PROP_REF, ANY, ANY, CACHE_SLOT|SRC)
28312831
if (UNEXPECTED(!zend_wrong_assign_to_variable_reference(prop, value_ptr, &garbage OPLINE_CC EXECUTE_DATA_CC))) {
28322832
prop = &EG(uninitialized_zval);
28332833
}
2834-
} else if (UNEXPECTED(ZEND_TYPE_IS_SET(prop_info->type))) {
2834+
} else if (ZEND_TYPE_IS_SET(prop_info->type)) {
28352835
prop = zend_assign_to_typed_property_reference(prop_info, prop, value_ptr, &garbage EXECUTE_DATA_CC);
28362836
} else {
28372837
zend_assign_to_variable_reference(prop, value_ptr, &garbage);
@@ -5580,7 +5580,7 @@ ZEND_VM_HOT_HANDLER(64, ZEND_RECV_INIT, NUM, CONST, CACHE_SLOT)
55805580
}
55815581
} else {
55825582
ZEND_VM_C_LABEL(recv_init_check_type):
5583-
if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) {
5583+
if ((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0) {
55845584
SAVE_OPLINE();
55855585
if (UNEXPECTED(!zend_verify_recv_arg_type(EX(func), arg_num, param, CACHE_ADDR(opline->extended_value)))) {
55865586
HANDLE_EXCEPTION();
@@ -5612,7 +5612,7 @@ ZEND_VM_HANDLER(164, ZEND_RECV_VARIADIC, NUM, UNUSED, CACHE_SLOT)
56125612
zend_hash_real_init_packed(Z_ARRVAL_P(params));
56135613
ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(params)) {
56145614
zval *param = EX_VAR_NUM(EX(func)->op_array.last_var + EX(func)->op_array.T);
5615-
if (UNEXPECTED(ZEND_TYPE_IS_SET(arg_info->type))) {
5615+
if (ZEND_TYPE_IS_SET(arg_info->type)) {
56165616
ZEND_ADD_CALL_FLAG(execute_data, ZEND_CALL_FREE_EXTRA_ARGS);
56175617
do {
56185618
if (UNEXPECTED(!zend_verify_variadic_arg_type(EX(func), arg_info, arg_num, param, CACHE_ADDR(opline->extended_value)))) {
@@ -7153,7 +7153,7 @@ ZEND_VM_HANDLER(126, ZEND_FE_FETCH_RW, VAR, ANY, JMP_ADDR)
71537153
if ((value_type & Z_TYPE_MASK) != IS_REFERENCE) {
71547154
zend_property_info *prop_info =
71557155
zend_get_property_info_for_slot(Z_OBJ_P(array), value);
7156-
if (UNEXPECTED(prop_info)) {
7156+
if (prop_info) {
71577157
if (UNEXPECTED(prop_info->flags & ZEND_ACC_READONLY)) {
71587158
zend_throw_error(NULL,
71597159
"Cannot acquire reference to readonly property %s::$%s",

0 commit comments

Comments
 (0)