Skip to content

Commit 6d1fbd2

Browse files
committed
Always use return address
1 parent 98bacde commit 6d1fbd2

File tree

2 files changed

+18
-18
lines changed

2 files changed

+18
-18
lines changed

ext/opcache/jit/zend_jit_arm64.dasc

+9-9
Original file line numberDiff line numberDiff line change
@@ -10936,7 +10936,15 @@ static int zend_jit_return(dasm_State **Dst, const zend_op *opline, const zend_o
1093610936
}
1093710937

1093810938
if (return_value_used == 0) {
10939-
/* pass */
10939+
if (ZEND_OBSERVER_ENABLED && Z_MODE(op1_addr) == IS_REG) {
10940+
zend_jit_addr dst = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->op1.var);
10941+
10942+
if (!zend_jit_spill_store(Dst, op1_addr, dst, op1_info, 1)) {
10943+
return 0;
10944+
}
10945+
op1_addr = dst;
10946+
}
10947+
ret_addr = op1_addr;
1094010948
} else if (opline->op1_type == IS_CONST) {
1094110949
zval *zv = RT_CONSTANT(opline, opline->op1);
1094210950
| ZVAL_COPY_CONST ret_addr, MAY_BE_ANY, MAY_BE_ANY, zv, ZREG_REG0, ZREG_TMP1, ZREG_FPR0
@@ -11005,14 +11013,6 @@ static int zend_jit_return(dasm_State **Dst, const zend_op *opline, const zend_o
1100511013

1100611014
|9:
1100711015
if (ZEND_OBSERVER_ENABLED) {
11008-
if (Z_MODE(op1_addr) == IS_REG) {
11009-
zend_jit_addr dst = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->op1.var);
11010-
11011-
if (!zend_jit_spill_store(Dst, op1_addr, dst, op1_info, 1)) {
11012-
return 0;
11013-
}
11014-
op1_addr = dst;
11015-
}
1101611016
| LOAD_ZVAL_ADDR FCARG2x, op1_addr
1101711017
| mov FCARG1x, FP
1101811018
| SET_EX_OPLINE opline, REG0

ext/opcache/jit/zend_jit_x86.dasc

+9-9
Original file line numberDiff line numberDiff line change
@@ -11649,7 +11649,15 @@ static int zend_jit_return(dasm_State **Dst, const zend_op *opline, const zend_o
1164911649
}
1165011650

1165111651
if (return_value_used == 0) {
11652-
/* pass */
11652+
if (ZEND_OBSERVER_ENABLED && Z_MODE(op1_addr) == IS_REG) {
11653+
zend_jit_addr dst = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->op1.var);
11654+
11655+
if (!zend_jit_spill_store(Dst, op1_addr, dst, op1_info, 1)) {
11656+
return 0;
11657+
}
11658+
op1_addr = dst;
11659+
}
11660+
ret_addr = op1_addr;
1165311661
} else if (opline->op1_type == IS_CONST) {
1165411662
zval *zv = RT_CONSTANT(opline, opline->op1);
1165511663
| ZVAL_COPY_CONST ret_addr, MAY_BE_ANY, MAY_BE_ANY, zv, ZREG_R0
@@ -11717,14 +11725,6 @@ static int zend_jit_return(dasm_State **Dst, const zend_op *opline, const zend_o
1171711725

1171811726
|9:
1171911727
if (ZEND_OBSERVER_ENABLED) {
11720-
if (Z_MODE(op1_addr) == IS_REG) {
11721-
zend_jit_addr dst = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->op1.var);
11722-
11723-
if (!zend_jit_spill_store(Dst, op1_addr, dst, op1_info, 1)) {
11724-
return 0;
11725-
}
11726-
op1_addr = dst;
11727-
}
1172811728
| LOAD_ZVAL_ADDR FCARG2a, op1_addr
1172911729
| mov FCARG1a, FP
1173011730
| SET_EX_OPLINE opline, r0

0 commit comments

Comments
 (0)