@@ -17224,7 +17224,10 @@ static void jit_frameless_icall1(zend_jit_ctx *jit, const zend_op *opline, uint3
17224
17224
ir_ref op1_ref = jit_ZVAL_ADDR(jit, op1_addr);
17225
17225
jit_set_Z_TYPE_INFO(jit, res_addr, IS_NULL);
17226
17226
if (opline->op1_type == IS_CV && (op1_info & MAY_BE_UNDEF)) {
17227
- zend_jit_zval_check_undef(jit, op1_ref, opline->op1.var, opline, 1);
17227
+ op1_ref = zend_jit_zval_check_undef(jit, op1_ref, opline->op1.var, opline, 1);
17228
+ op1_info &= ~MAY_BE_UNDEF;
17229
+ op1_info |= MAY_BE_NULL;
17230
+ op1_addr = ZEND_ADDR_REF_ZVAL(op1_ref);
17228
17231
}
17229
17232
if (op1_info & MAY_BE_REF) {
17230
17233
op1_ref = jit_ZVAL_DEREF_ref(jit, op1_ref);
@@ -17266,10 +17269,16 @@ static void jit_frameless_icall2(zend_jit_ctx *jit, const zend_op *opline, uint3
17266
17269
ir_ref op2_ref = jit_ZVAL_ADDR(jit, op2_addr);
17267
17270
jit_set_Z_TYPE_INFO(jit, res_addr, IS_NULL);
17268
17271
if (opline->op1_type == IS_CV && (op1_info & MAY_BE_UNDEF)) {
17269
- zend_jit_zval_check_undef(jit, op1_ref, opline->op1.var, opline, 1);
17272
+ op1_ref = zend_jit_zval_check_undef(jit, op1_ref, opline->op1.var, opline, 1);
17273
+ op1_info &= ~MAY_BE_UNDEF;
17274
+ op1_info |= MAY_BE_NULL;
17275
+ op1_addr = ZEND_ADDR_REF_ZVAL(op1_ref);
17270
17276
}
17271
17277
if (opline->op2_type == IS_CV && (op2_info & MAY_BE_UNDEF)) {
17272
- zend_jit_zval_check_undef(jit, op2_ref, opline->op2.var, opline, 1);
17278
+ op2_ref = zend_jit_zval_check_undef(jit, op2_ref, opline->op2.var, opline, 1);
17279
+ op2_info &= ~MAY_BE_UNDEF;
17280
+ op2_info |= MAY_BE_NULL;
17281
+ op2_addr = ZEND_ADDR_REF_ZVAL(op2_ref);
17273
17282
}
17274
17283
if (op1_info & MAY_BE_REF) {
17275
17284
op1_ref = jit_ZVAL_DEREF_ref(jit, op1_ref);
@@ -17325,13 +17334,22 @@ static void jit_frameless_icall3(zend_jit_ctx *jit, const zend_op *opline, uint3
17325
17334
ir_ref op3_ref = jit_ZVAL_ADDR(jit, op3_addr);
17326
17335
jit_set_Z_TYPE_INFO(jit, res_addr, IS_NULL);
17327
17336
if (opline->op1_type == IS_CV && (op1_info & MAY_BE_UNDEF)) {
17328
- zend_jit_zval_check_undef(jit, op1_ref, opline->op1.var, opline, 1);
17337
+ op1_ref = zend_jit_zval_check_undef(jit, op1_ref, opline->op1.var, opline, 1);
17338
+ op1_info &= ~MAY_BE_UNDEF;
17339
+ op1_info |= MAY_BE_NULL;
17340
+ op1_addr = ZEND_ADDR_REF_ZVAL(op1_ref);
17329
17341
}
17330
17342
if (opline->op2_type == IS_CV && (op2_info & MAY_BE_UNDEF)) {
17331
- zend_jit_zval_check_undef(jit, op2_ref, opline->op2.var, opline, 1);
17343
+ op2_ref = zend_jit_zval_check_undef(jit, op2_ref, opline->op2.var, opline, 1);
17344
+ op2_info &= ~MAY_BE_UNDEF;
17345
+ op2_info |= MAY_BE_NULL;
17346
+ op2_addr = ZEND_ADDR_REF_ZVAL(op2_ref);
17332
17347
}
17333
17348
if ((opline+1)->op1_type == IS_CV && (op1_data_info & MAY_BE_UNDEF)) {
17334
- zend_jit_zval_check_undef(jit, op3_ref, (opline+1)->op1.var, opline, 1);
17349
+ op3_ref = zend_jit_zval_check_undef(jit, op3_ref, (opline+1)->op1.var, opline, 1);
17350
+ op1_data_info &= ~MAY_BE_UNDEF;
17351
+ op1_data_info |= MAY_BE_NULL;
17352
+ op3_addr = ZEND_ADDR_REF_ZVAL(op3_ref);
17335
17353
}
17336
17354
if (op1_info & MAY_BE_REF) {
17337
17355
op1_ref = jit_ZVAL_DEREF_ref(jit, op1_ref);
0 commit comments