@@ -11590,19 +11590,27 @@ static zend_bool zend_jit_verify_return_type(dasm_State **Dst, const zend_op *op
11590
11590
11591
11591
uint32_t type_mask = ZEND_TYPE_PURE_MASK(arg_info->type);
11592
11592
if (type_mask == 0) {
11593
- | jmp >8
11593
+ | jmp >7
11594
11594
} else if (is_power_of_two(type_mask)) {
11595
11595
uint32_t type_code = concrete_type(type_mask);
11596
11596
| cmp byte [r0 + 8], type_code
11597
- | jne >8
11597
+ | jne >7
11598
11598
} else {
11599
11599
| mov edx, 1
11600
11600
| mov cl, byte [r0 + 8]
11601
11601
| shl edx, cl
11602
11602
| test edx, type_mask
11603
- | je >8
11603
+ | je >7
11604
11604
}
11605
11605
|.cold_code
11606
+ |7:
11607
+ | SAVE_VALID_OPLINE opline, r1
11608
+ if (op1_info & MAY_BE_UNDEF) {
11609
+ | IF_NOT_ZVAL_TYPE op1_addr, IS_UNDEF, >8
11610
+ | mov FCARG1a, opline->op1.var
11611
+ | EXT_CALL zend_jit_undefined_op_helper, r1
11612
+ | LOAD_ADDR_ZTS r0, executor_globals, uninitialized_zval
11613
+ }
11606
11614
|8:
11607
11615
| mov FCARG1a, r0
11608
11616
| mov r0, EX->run_time_cache
@@ -11611,13 +11619,11 @@ static zend_bool zend_jit_verify_return_type(dasm_State **Dst, const zend_op *op
11611
11619
|.if X64
11612
11620
| LOAD_ADDR CARG3, (ptrdiff_t)arg_info
11613
11621
| mov CARG4, r0
11614
- | SAVE_VALID_OPLINE opline, r0
11615
11622
| EXT_CALL zend_jit_verify_return_slow, r0
11616
11623
|.else
11617
11624
| sub r4, 8
11618
11625
| push r0
11619
11626
| push (ptrdiff_t)arg_info
11620
- | SAVE_VALID_OPLINE opline, r0
11621
11627
| EXT_CALL zend_jit_verify_return_slow, r0
11622
11628
| add r4, 8
11623
11629
|.endif
0 commit comments