Skip to content

Commit 04c3e31

Browse files
committed
More accurate checks to eliminate reloading
1 parent f9f6123 commit 04c3e31

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

ext/opcache/jit/zend_jit_x86.dasc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5785,7 +5785,7 @@ static int zend_jit_assign_dim(dasm_State **Dst, const zend_op *opline, const ze
57855785

57865786
if (op1_info & (MAY_BE_ANY-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_ARRAY))) {
57875787
| SAVE_VALID_OPLINE opline, r0
5788-
if (Z_REG(op1_addr) != ZREG_FCARG1a) {
5788+
if (Z_REG(op1_addr) != ZREG_FCARG1a || Z_OFFSET(op1_addr) != 0) {
57895789
| LOAD_ZVAL_ADDR FCARG1a, op1_addr
57905790
}
57915791
if (opline->op2_type == IS_UNUSED) {
@@ -6039,7 +6039,7 @@ static int zend_jit_assign_dim_op(dasm_State **Dst, const zend_op *opline, const
60396039
}
60406040

60416041
| SAVE_VALID_OPLINE opline, r0
6042-
if (Z_REG(op1_addr) != ZREG_FCARG1a) {
6042+
if (Z_REG(op1_addr) != ZREG_FCARG1a || Z_OFFSET(op1_addr) != 0) {
60436043
| LOAD_ZVAL_ADDR FCARG1a, op1_addr
60446044
}
60456045
if (opline->op2_type == IS_UNUSED) {
@@ -7872,7 +7872,7 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, const z
78727872
|.cold_code
78737873
|2:
78747874
}
7875-
if (Z_REG(op1_addr) != ZREG_FCARG1a) {
7875+
if (Z_REG(op1_addr) != ZREG_FCARG1a || Z_OFFSET(op1_addr) != 0) {
78767876
| LOAD_ZVAL_ADDR FCARG1a, op1_addr
78777877
}
78787878
| SAVE_VALID_OPLINE opline, r0
@@ -10479,7 +10479,7 @@ static int zend_jit_fetch_dim_read(dasm_State **Dst, const zend_op *opline, cons
1047910479
}
1048010480
}
1048110481
| SAVE_VALID_OPLINE opline, r0
10482-
if (Z_REG(op1_addr) != ZREG_FCARG1a) {
10482+
if (Z_REG(op1_addr) != ZREG_FCARG1a || Z_OFFSET(op1_addr) != 0) {
1048310483
| LOAD_ZVAL_ADDR FCARG1a, op1_addr
1048410484
}
1048510485
| LOAD_ZVAL_ADDR FCARG2a, op2_addr
@@ -10513,7 +10513,7 @@ static int zend_jit_fetch_dim_read(dasm_State **Dst, const zend_op *opline, cons
1051310513
}
1051410514
}
1051510515
| SAVE_VALID_OPLINE opline, r0
10516-
if (Z_REG(op1_addr) != ZREG_FCARG1a) {
10516+
if (Z_REG(op1_addr) != ZREG_FCARG1a || Z_OFFSET(op1_addr) != 0) {
1051710517
| LOAD_ZVAL_ADDR FCARG1a, op1_addr
1051810518
}
1051910519
if (opline->op2_type == IS_CONST && Z_EXTRA_P(RT_CONSTANT(opline, opline->op2)) == ZEND_EXTRA_VALUE) {
@@ -10694,7 +10694,7 @@ static int zend_jit_isset_isempty_dim(dasm_State **Dst, const zend_op *opline, c
1069410694

1069510695
if (op1_info & (MAY_BE_STRING|MAY_BE_OBJECT)) {
1069610696
| SAVE_VALID_OPLINE opline, r0
10697-
if (Z_REG(op1_addr) != ZREG_FCARG1a) {
10697+
if (Z_REG(op1_addr) != ZREG_FCARG1a || Z_OFFSET(op1_addr) != 0) {
1069810698
| LOAD_ZVAL_ADDR FCARG1a, op1_addr
1069910699
}
1070010700
if (opline->op2_type == IS_CONST && Z_EXTRA_P(RT_CONSTANT(opline, opline->op2)) == ZEND_EXTRA_VALUE) {

0 commit comments

Comments
 (0)