@@ -10293,20 +10293,32 @@ static int zend_jit_isset_isempty_dim(dasm_State **Dst, const zend_op *opline, c
1029310293 |7:
1029410294 }
1029510295
10296- | SAVE_VALID_OPLINE opline, r0
10297- if (Z_REG(op1_addr) != ZREG_FCARG1a) {
10298- | LOAD_ZVAL_ADDR FCARG1a, op1_addr
10299- }
10300- if (opline->op2_type == IS_CONST && Z_EXTRA_P(RT_CONSTANT(opline, opline->op2)) == ZEND_EXTRA_VALUE) {
10301- ZEND_ASSERT(Z_MODE(op2_addr) == IS_CONST_ZVAL);
10302- | LOAD_ADDR FCARG2a, (Z_ZV(op2_addr) + 1)
10296+ if (op1_info & (MAY_BE_STRING|MAY_BE_OBJECT)) {
10297+ | SAVE_VALID_OPLINE opline, r0
10298+ if (Z_REG(op1_addr) != ZREG_FCARG1a) {
10299+ | LOAD_ZVAL_ADDR FCARG1a, op1_addr
10300+ }
10301+ if (opline->op2_type == IS_CONST && Z_EXTRA_P(RT_CONSTANT(opline, opline->op2)) == ZEND_EXTRA_VALUE) {
10302+ ZEND_ASSERT(Z_MODE(op2_addr) == IS_CONST_ZVAL);
10303+ | LOAD_ADDR FCARG2a, (Z_ZV(op2_addr) + 1)
10304+ } else {
10305+ | LOAD_ZVAL_ADDR FCARG2a, op2_addr
10306+ }
10307+ | EXT_CALL zend_jit_isset_dim_helper, r0
10308+ | test r0, r0
10309+ | jz >9
10310+ | jmp >8
1030310311 } else {
10304- | LOAD_ZVAL_ADDR FCARG2a, op2_addr
10312+ if (op2_info & MAY_BE_UNDEF) {
10313+ if (op2_info & MAY_BE_ANY) {
10314+ | IF_NOT_ZVAL_TYPE op2_addr, IS_UNDEF, >1
10315+ }
10316+ | mov FCARG1d, opline->op2.var
10317+ | EXT_CALL zend_jit_undefined_op_helper, r0
10318+ |1:
10319+ }
10320+ | jmp >9
1030510321 }
10306- | EXT_CALL zend_jit_isset_dim_helper, r0
10307- | test r0, r0
10308- | jz >9
10309- | jmp >8
1031010322
1031110323 if (op1_info & MAY_BE_ARRAY) {
1031210324 |.code
0 commit comments