Skip to content

Commit 6191df7

Browse files
committed
Avoid reloading
1 parent b05f364 commit 6191df7

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

Zend/zend_vm_def.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1000,8 +1000,10 @@ ZEND_VM_COLD_CONST_HANDLER(13, ZEND_BW_NOT, CONST|TMPVAR|CV, ANY)
10001000
}
10011001

10021002
SAVE_OPLINE();
1003-
bitwise_not_function(EX_VAR(opline->result.var),
1004-
GET_OP1_ZVAL_PTR(BP_VAR_R));
1003+
if (OP1_TYPE == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
1004+
op1 = ZVAL_UNDEFINED_OP1();
1005+
}
1006+
bitwise_not_function(EX_VAR(opline->result.var), op1);
10051007
FREE_OP1();
10061008
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10071009
}

Zend/zend_vm_execute.h

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3244,8 +3244,10 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_NOT_SPEC_CONST
32443244
}
32453245

32463246
SAVE_OPLINE();
3247-
bitwise_not_function(EX_VAR(opline->result.var),
3248-
RT_CONSTANT(opline, opline->op1));
3247+
if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
3248+
op1 = ZVAL_UNDEFINED_OP1();
3249+
}
3250+
bitwise_not_function(EX_VAR(opline->result.var), op1);
32493251

32503252
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32513253
}
@@ -13212,8 +13214,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_NOT_SPEC_TMPVAR_HANDLER(ZEN
1321213214
}
1321313215

1321413216
SAVE_OPLINE();
13215-
bitwise_not_function(EX_VAR(opline->result.var),
13216-
_get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC));
13217+
if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
13218+
op1 = ZVAL_UNDEFINED_OP1();
13219+
}
13220+
bitwise_not_function(EX_VAR(opline->result.var), op1);
1321713221
zval_ptr_dtor_nogc(free_op1);
1321813222
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1321913223
}
@@ -36417,8 +36421,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_NOT_SPEC_CV_HANDLER(ZEND_OP
3641736421
}
3641836422

3641936423
SAVE_OPLINE();
36420-
bitwise_not_function(EX_VAR(opline->result.var),
36421-
_get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC));
36424+
if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
36425+
op1 = ZVAL_UNDEFINED_OP1();
36426+
}
36427+
bitwise_not_function(EX_VAR(opline->result.var), op1);
3642236428

3642336429
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3642436430
}

0 commit comments

Comments
 (0)