@@ -8234,6 +8234,9 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_
82348234 }
82358235
82368236 if ((op1_info & (MAY_BE_ANY-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG))) == MAY_BE_DOUBLE) {
8237+ if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) {
8238+ |.cold_code
8239+ }
82378240 |2:
82388241 | fmov FPR0, xzr // TODO: "movi d0, #0" is not recognized by DynASM/arm64
82398242 | DOUBLE_CMP ZREG_FPR0, op1_addr, ZREG_TMP1, ZREG_FPTMP
@@ -8278,6 +8281,10 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_
82788281 |1:
82798282 | SET_ZVAL_TYPE_INFO_FROM_REG res_addr, REG0w, TMP1
82808283 }
8284+ if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) {
8285+ | b >9
8286+ |.code
8287+ }
82818288 } else {
82828289 if (exit_addr) {
82838290 if (branch_opcode == ZEND_JMPNZ || branch_opcode == ZEND_JMPNZ_EX) {
@@ -8289,6 +8296,9 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_
82898296 | beq &exit_addr
82908297 |1:
82918298 }
8299+ if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) {
8300+ | b >9
8301+ }
82928302 } else {
82938303 ZEND_ASSERT(true_label != (uint32_t)-1 || false_label != (uint32_t)-1);
82948304 if (false_label != (uint32_t)-1 ) {
@@ -8297,12 +8307,20 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_
82978307 |1:
82988308 if (true_label != (uint32_t)-1) {
82998309 | b =>true_label
8310+ } else if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) {
8311+ | b >9
83008312 }
83018313 } else {
83028314 | bvs => true_label
83038315 | bne => true_label
8316+ if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) {
8317+ | b >9
8318+ }
83048319 }
83058320 }
8321+ if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) {
8322+ |.code
8323+ }
83068324 }
83078325 } else if (op1_info & (MAY_BE_ANY - (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG))) {
83088326 if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) {
0 commit comments