Skip to content

Commit cb3cfc9

Browse files
committed
Removed tests that always (or almost always) true
1 parent 433d68f commit cb3cfc9

File tree

3 files changed

+43
-8
lines changed

3 files changed

+43
-8
lines changed

Zend/zend_execute.c

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1128,6 +1128,41 @@ static zend_always_inline int zend_verify_arg_type(zend_function *zf, uint32_t a
11281128
return 1;
11291129
}
11301130

1131+
static zend_always_inline int zend_verify_recv_arg_type(zend_function *zf, uint32_t arg_num, zval *arg, zval *default_value, void **cache_slot)
1132+
{
1133+
zend_arg_info *cur_arg_info = &zf->common.arg_info[arg_num-1];
1134+
zend_class_entry *ce;
1135+
1136+
ZEND_ASSERT(arg_num <= zf->common.num_args);
1137+
cur_arg_info = &zf->common.arg_info[arg_num-1];
1138+
1139+
ce = NULL;
1140+
if (UNEXPECTED(!zend_check_type(cur_arg_info->type, arg, &ce, cache_slot, default_value, zf->common.scope, 0))) {
1141+
zend_verify_arg_error(zf, cur_arg_info, arg_num, ce, arg);
1142+
return 0;
1143+
}
1144+
1145+
return 1;
1146+
}
1147+
1148+
static zend_always_inline int zend_verify_variadic_arg_type(zend_function *zf, uint32_t arg_num, zval *arg, zval *default_value, void **cache_slot)
1149+
{
1150+
zend_arg_info *cur_arg_info;
1151+
zend_class_entry *ce;
1152+
1153+
ZEND_ASSERT(arg_num > zf->common.num_args);
1154+
ZEND_ASSERT(zf->common.fn_flags & ZEND_ACC_VARIADIC);
1155+
cur_arg_info = &zf->common.arg_info[zf->common.num_args];
1156+
1157+
ce = NULL;
1158+
if (UNEXPECTED(!zend_check_type(cur_arg_info->type, arg, &ce, cache_slot, default_value, zf->common.scope, 0))) {
1159+
zend_verify_arg_error(zf, cur_arg_info, arg_num, ce, arg);
1160+
return 0;
1161+
}
1162+
1163+
return 1;
1164+
}
1165+
11311166
static zend_never_inline int zend_verify_internal_arg_types(zend_function *fbc, zend_execute_data *call)
11321167
{
11331168
uint32_t i;

Zend/zend_vm_def.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5040,11 +5040,11 @@ ZEND_VM_HOT_HANDLER(63, ZEND_RECV, NUM, UNUSED|CACHE_SLOT)
50405040
SAVE_OPLINE();
50415041
zend_missing_arg_error(execute_data);
50425042
HANDLE_EXCEPTION();
5043-
} else if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) {
5043+
} else {
50445044
zval *param = EX_VAR(opline->result.var);
50455045

50465046
SAVE_OPLINE();
5047-
if (UNEXPECTED(!zend_verify_arg_type(EX(func), arg_num, param, NULL, CACHE_ADDR(opline->op2.num)) || EG(exception))) {
5047+
if (UNEXPECTED(!zend_verify_recv_arg_type(EX(func), arg_num, param, NULL, CACHE_ADDR(opline->op2.num)) || EG(exception))) {
50485048
HANDLE_EXCEPTION();
50495049
}
50505050
}
@@ -5092,7 +5092,7 @@ ZEND_VM_HOT_HANDLER(64, ZEND_RECV_INIT, NUM, CONST, CACHE_SLOT)
50925092
zval *default_value = RT_CONSTANT(opline, opline->op2);
50935093

50945094
SAVE_OPLINE();
5095-
if (UNEXPECTED(!zend_verify_arg_type(EX(func), arg_num, param, default_value, CACHE_ADDR(opline->extended_value)) || EG(exception))) {
5095+
if (UNEXPECTED(!zend_verify_recv_arg_type(EX(func), arg_num, param, default_value, CACHE_ADDR(opline->extended_value)) || EG(exception))) {
50965096
HANDLE_EXCEPTION();
50975097
}
50985098
}
@@ -5121,7 +5121,7 @@ ZEND_VM_HANDLER(164, ZEND_RECV_VARIADIC, NUM, UNUSED|CACHE_SLOT)
51215121
param = EX_VAR_NUM(EX(func)->op_array.last_var + EX(func)->op_array.T);
51225122
if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) {
51235123
do {
5124-
zend_verify_arg_type(EX(func), arg_num, param, NULL, CACHE_ADDR(opline->op2.num));
5124+
zend_verify_variadic_arg_type(EX(func), arg_num, param, NULL, CACHE_ADDR(opline->op2.num));
51255125
if (Z_OPT_REFCOUNTED_P(param)) Z_ADDREF_P(param);
51265126
ZEND_HASH_FILL_ADD(param);
51275127
param++;

Zend/zend_vm_execute.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2465,7 +2465,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RECV_INIT_SPEC_CON
24652465
zval *default_value = RT_CONSTANT(opline, opline->op2);
24662466

24672467
SAVE_OPLINE();
2468-
if (UNEXPECTED(!zend_verify_arg_type(EX(func), arg_num, param, default_value, CACHE_ADDR(opline->extended_value)) || EG(exception))) {
2468+
if (UNEXPECTED(!zend_verify_recv_arg_type(EX(func), arg_num, param, default_value, CACHE_ADDR(opline->extended_value)) || EG(exception))) {
24692469
HANDLE_EXCEPTION();
24702470
}
24712471
}
@@ -2540,11 +2540,11 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RECV_SPEC_UNUSED_H
25402540
SAVE_OPLINE();
25412541
zend_missing_arg_error(execute_data);
25422542
HANDLE_EXCEPTION();
2543-
} else if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) {
2543+
} else {
25442544
zval *param = EX_VAR(opline->result.var);
25452545

25462546
SAVE_OPLINE();
2547-
if (UNEXPECTED(!zend_verify_arg_type(EX(func), arg_num, param, NULL, CACHE_ADDR(opline->op2.num)) || EG(exception))) {
2547+
if (UNEXPECTED(!zend_verify_recv_arg_type(EX(func), arg_num, param, NULL, CACHE_ADDR(opline->op2.num)) || EG(exception))) {
25482548
HANDLE_EXCEPTION();
25492549
}
25502550
}
@@ -2572,7 +2572,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RECV_VARIADIC_SPEC_UNUSED_HAND
25722572
param = EX_VAR_NUM(EX(func)->op_array.last_var + EX(func)->op_array.T);
25732573
if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) {
25742574
do {
2575-
zend_verify_arg_type(EX(func), arg_num, param, NULL, CACHE_ADDR(opline->op2.num));
2575+
zend_verify_variadic_arg_type(EX(func), arg_num, param, NULL, CACHE_ADDR(opline->op2.num));
25762576
if (Z_OPT_REFCOUNTED_P(param)) Z_ADDREF_P(param);
25772577
ZEND_HASH_FILL_ADD(param);
25782578
param++;

0 commit comments

Comments
 (0)