Skip to content

Commit 718e089

Browse files
committed
Only check for undef in RECV(_INIT)
As we initialize CVs to undef, we don't need to check for both argument count and undef here, the latter is enough.
1 parent 143d0c8 commit 718e089

File tree

2 files changed

+10
-14
lines changed

2 files changed

+10
-14
lines changed

Zend/zend_vm_def.h

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5322,11 +5322,9 @@ ZEND_VM_COLD_HELPER(zend_verify_recv_arg_type_helper, ANY, ANY, zval *op_1)
53225322
ZEND_VM_HOT_HANDLER(63, ZEND_RECV, NUM, UNUSED, CACHE_SLOT)
53235323
{
53245324
USE_OPLINE
5325-
uint32_t arg_num = opline->op1.num;
5326-
zval *param;
5327-
5328-
param = EX_VAR(opline->result.var);
5329-
if (UNEXPECTED(arg_num > EX_NUM_ARGS() || Z_ISUNDEF_P(param))) {
5325+
zval *param = EX_VAR(opline->result.var);
5326+
if (UNEXPECTED(Z_ISUNDEF_P(param))) {
5327+
uint32_t arg_num = opline->op1.num;
53305328
ZEND_VM_DISPATCH_TO_HELPER(zend_missing_arg_helper, arg_num, arg_num);
53315329
}
53325330

@@ -5340,9 +5338,9 @@ ZEND_VM_HOT_HANDLER(63, ZEND_RECV, NUM, UNUSED, CACHE_SLOT)
53405338
ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_RECV, op->op2.num == MAY_BE_ANY, ZEND_RECV_NOTYPE, NUM, NUM, CACHE_SLOT)
53415339
{
53425340
USE_OPLINE
5343-
uint32_t arg_num = opline->op1.num;
53445341

5345-
if (UNEXPECTED(arg_num > EX_NUM_ARGS()) || Z_ISUNDEF_P(EX_VAR(opline->result.var))) {
5342+
if (UNEXPECTED(Z_ISUNDEF_P(EX_VAR(opline->result.var)))) {
5343+
uint32_t arg_num = opline->op1.num;
53465344
ZEND_VM_DISPATCH_TO_HELPER(zend_missing_arg_helper, arg_num, arg_num);
53475345
}
53485346

Zend/zend_vm_execute.h

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2221,9 +2221,9 @@ static zend_never_inline ZEND_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_ve
22212221
static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RECV_NOTYPE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22222222
{
22232223
USE_OPLINE
2224-
uint32_t arg_num = opline->op1.num;
22252224

2226-
if (UNEXPECTED(arg_num > EX_NUM_ARGS()) || Z_ISUNDEF_P(EX_VAR(opline->result.var))) {
2225+
if (UNEXPECTED(Z_ISUNDEF_P(EX_VAR(opline->result.var)))) {
2226+
uint32_t arg_num = opline->op1.num;
22272227
ZEND_VM_TAIL_CALL(zend_missing_arg_helper_SPEC(arg_num ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22282228
}
22292229

@@ -3237,11 +3237,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR_
32373237
static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RECV_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32383238
{
32393239
USE_OPLINE
3240-
uint32_t arg_num = opline->op1.num;
3241-
zval *param;
3242-
3243-
param = EX_VAR(opline->result.var);
3244-
if (UNEXPECTED(arg_num > EX_NUM_ARGS() || Z_ISUNDEF_P(param))) {
3240+
zval *param = EX_VAR(opline->result.var);
3241+
if (UNEXPECTED(Z_ISUNDEF_P(param))) {
3242+
uint32_t arg_num = opline->op1.num;
32453243
ZEND_VM_TAIL_CALL(zend_missing_arg_helper_SPEC(arg_num ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
32463244
}
32473245

0 commit comments

Comments
 (0)