Skip to content

Commit 3ead24e

Browse files
committed
Check interrupt only if the link is a part of the loop.
1 parent c4fc453 commit 3ead24e

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

ext/opcache/jit/zend_jit_trace.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4843,7 +4843,10 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
48434843
goto jit_failure;
48444844
}
48454845
t->link = zend_jit_find_trace(p->opline->handler);
4846-
zend_jit_trace_link_to_root(&dasm_state, &zend_jit_traces[t->link]);
4846+
zend_jit_trace_link_to_root(&dasm_state, &zend_jit_traces[t->link],
4847+
parent_trace &&
4848+
(zend_jit_traces[t->link].flags & ZEND_JIT_TRACE_CHECK_INTERRUPT) &&
4849+
zend_jit_traces[parent_trace].root == t->link);
48474850
} else {
48484851
zend_jit_trace_return(&dasm_state, 0);
48494852
}

ext/opcache/jit/zend_jit_x86.dasc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3133,7 +3133,7 @@ static int zend_jit_link_side_trace(const void *code, size_t size, uint32_t jmp_
31333133
return zend_jit_patch(code, size, jmp_table_size, zend_jit_trace_get_exit_addr(exit_num), addr);
31343134
}
31353135

3136-
static int zend_jit_trace_link_to_root(dasm_State **Dst, zend_jit_trace_info *t)
3136+
static int zend_jit_trace_link_to_root(dasm_State **Dst, zend_jit_trace_info *t, zend_bool check_interrupt)
31373137
{
31383138
const void *link_addr;
31393139
size_t prologue_size;
@@ -3167,7 +3167,7 @@ static int zend_jit_trace_link_to_root(dasm_State **Dst, zend_jit_trace_info *t)
31673167
}
31683168
link_addr = (const void*)((const char*)t->code_start + prologue_size);
31693169

3170-
if (t->flags & ZEND_JIT_TRACE_CHECK_INTERRUPT) {
3170+
if (check_interrupt) {
31713171
/* Check timeout for links to LOOP */
31723172
| MEM_OP2_1_ZTS cmp, byte, executor_globals, vm_interrupt, 0, r0
31733173
| je &link_addr

0 commit comments

Comments
 (0)