Skip to content

Commit 6ab2e82

Browse files
committed
Avoid STORE of register inherited from parent trace
1 parent 8a04d39 commit 6ab2e82

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

ext/opcache/jit/zend_jit_trace.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2513,8 +2513,10 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
25132513
// TODO: Merge two loops implementing paralel move ???
25142514
for (i = 0; i < parent_vars_count; i++) {
25152515
if (STACK_REG(parent_stack, i) != ZREG_NONE) {
2516-
// TODO: optimize out useless stores ????
2517-
if (!zend_jit_store_var(&dasm_state, ssa->var_info[i].type, i, STACK_REG(parent_stack, i))) {
2516+
if (ra && ra[i] && ra[i]->reg == STACK_REG(parent_stack, i)) {
2517+
/* register already loaded by parent trace */
2518+
SET_STACK_REG(stack, i, ra[i]->reg);
2519+
} else if (!zend_jit_store_var(&dasm_state, ssa->var_info[i].type, i, STACK_REG(parent_stack, i))) {
25182520
goto jit_failure;
25192521
}
25202522
}

0 commit comments

Comments
 (0)