Skip to content

Commit a516e29

Browse files
committed
Merge branch 'PHP-8.0' into PHP-8.1
* PHP-8.0: Fix ext/opcache/tests/jit/inc_obj_004.phpt failure introduced by fd74ee7
2 parents 819df03 + ce42dcf commit a516e29

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

ext/opcache/jit/zend_jit_arm64.dasc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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)) {

ext/opcache/jit/zend_jit_x86.dasc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8821,6 +8821,9 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_
88218821
}
88228822

88238823
if ((op1_info & (MAY_BE_ANY-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG))) == MAY_BE_DOUBLE) {
8824+
if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) {
8825+
|.cold_code
8826+
}
88248827
|2:
88258828
if (CAN_USE_AVX()) {
88268829
| vxorps xmm0, xmm0, xmm0
@@ -8869,6 +8872,10 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_
88698872
|1:
88708873
| SET_ZVAL_TYPE_INFO res_addr, eax
88718874
}
8875+
if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) {
8876+
| jmp >9
8877+
|.code
8878+
}
88728879
} else {
88738880
if (exit_addr) {
88748881
if (branch_opcode == ZEND_JMPNZ || branch_opcode == ZEND_JMPNZ_EX) {
@@ -8880,6 +8887,9 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_
88808887
| je &exit_addr
88818888
|1:
88828889
}
8890+
if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) {
8891+
| jmp >9
8892+
}
88838893
} else {
88848894
ZEND_ASSERT(true_label != (uint32_t)-1 || false_label != (uint32_t)-1);
88858895
if (false_label != (uint32_t)-1 ) {
@@ -8888,12 +8898,20 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_
88888898
|1:
88898899
if (true_label != (uint32_t)-1) {
88908900
| jmp =>true_label
8901+
} else if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) {
8902+
| jmp >9
88918903
}
88928904
} else {
88938905
| jp => true_label
88948906
| jne => true_label
8907+
if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) {
8908+
| jmp >9
8909+
}
88958910
}
88968911
}
8912+
if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) {
8913+
|.code
8914+
}
88978915
}
88988916
} else if (op1_info & (MAY_BE_ANY - (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG))) {
88998917
if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) {

0 commit comments

Comments
 (0)