Skip to content

Commit 703bd89

Browse files
committed
Merge branch 'PHP-8.0' into PHP-8.1
* PHP-8.0: JIT: keep register value across call
2 parents e0e5b59 + 015cafa commit 703bd89

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

ext/opcache/jit/zend_jit_arm64.dasc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5557,9 +5557,16 @@ static int zend_jit_assign_to_variable_call(dasm_State **Dst,
55575557
| IF_ZVAL_TYPE val_addr, IS_UNDEF, >1, ZREG_TMP1
55585558
|.cold_code
55595559
|1:
5560+
ZEND_ASSERT(Z_REG(val_addr) == ZREG_FP);
5561+
if (Z_REG(var_addr) != ZREG_FP) {
5562+
| str Rx(Z_REG(var_addr)), T1 // save
5563+
}
55605564
| SET_EX_OPLINE opline, REG0
55615565
| LOAD_32BIT_VAL FCARG1w, Z_OFFSET(val_addr)
55625566
| EXT_CALL zend_jit_undefined_op_helper, REG0
5567+
if (Z_REG(var_addr) != ZREG_FP) {
5568+
| ldr Rx(Z_REG(var_addr)), T1 // restore
5569+
}
55635570
| b >1
55645571
|.code
55655572
|1:

ext/opcache/jit/zend_jit_x86.dasc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6032,9 +6032,16 @@ static int zend_jit_assign_to_variable_call(dasm_State **Dst,
60326032
| IF_ZVAL_TYPE val_addr, IS_UNDEF, >1
60336033
|.cold_code
60346034
|1:
6035+
ZEND_ASSERT(Z_REG(val_addr) == ZREG_FP);
6036+
if (Z_REG(var_addr) != ZREG_FP) {
6037+
| mov aword T1, Ra(Z_REG(var_addr)) // save
6038+
}
60356039
| SET_EX_OPLINE opline, r0
60366040
| mov FCARG1d, Z_OFFSET(val_addr)
60376041
| EXT_CALL zend_jit_undefined_op_helper, r0
6042+
if (Z_REG(var_addr) != ZREG_FP) {
6043+
| mov Ra(Z_REG(var_addr)), aword T1 // restore
6044+
}
60386045
| jmp >1
60396046
|.code
60406047
|1:

0 commit comments

Comments
 (0)