Skip to content

Commit 015cafa

Browse files
committed
JIT: keep register value across call
1 parent 04209de commit 015cafa

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

ext/opcache/jit/zend_jit_x86.dasc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6030,9 +6030,16 @@ static int zend_jit_assign_to_variable_call(dasm_State **Dst,
60306030
| IF_ZVAL_TYPE val_addr, IS_UNDEF, >1
60316031
|.cold_code
60326032
|1:
6033+
ZEND_ASSERT(Z_REG(val_addr) == ZREG_FP);
6034+
if (Z_REG(var_addr) != ZREG_FP) {
6035+
| mov aword T1, Ra(Z_REG(var_addr)) // save
6036+
}
60336037
| SET_EX_OPLINE opline, r0
60346038
| mov FCARG1d, Z_OFFSET(val_addr)
60356039
| EXT_CALL zend_jit_undefined_op_helper, r0
6040+
if (Z_REG(var_addr) != ZREG_FP) {
6041+
| mov Ra(Z_REG(var_addr)), aword T1 // restore
6042+
}
60366043
| jmp >1
60376044
|.code
60386045
|1:

0 commit comments

Comments
 (0)