return 0;
}
+ if (JIT_G(tracing)) {
+ ++(*ZEND_OP_TRACE_INFO(opline, offset)->counter);
+ return 0;
+ }
+
if (JIT_G(debug) & ZEND_JIT_DEBUG_TRACE_START) {
fprintf(stderr, "---- TRACE %d start (%s) %s() %s:%d\n",
trace_num,
goto abort;
}
+ JIT_G(tracing) = 1;
stop = zend_jit_trace_execute(execute_data, opline, trace_buffer,
ZEND_OP_TRACE_INFO(opline, offset)->trace_flags & ZEND_JIT_TRACE_START_MASK, 0);
+ JIT_G(tracing) = 0;
if (UNEXPECTED(JIT_G(debug) & ZEND_JIT_DEBUG_TRACE_BYTECODE)) {
zend_jit_dump_trace(trace_buffer, NULL);
}
}
+ JIT_G(tracing) = 1;
stop = zend_jit_trace_execute(execute_data, EX(opline), trace_buffer, ZEND_JIT_TRACE_START_SIDE, is_megamorphic);
+ JIT_G(tracing) = 0;
if (UNEXPECTED(JIT_G(debug) & ZEND_JIT_DEBUG_TRACE_BYTECODE)) {
zend_jit_dump_trace(trace_buffer, NULL);
EX(opline) = opline;
}
- if (EG(vm_interrupt)) {
+ if (EG(vm_interrupt) || JIT_G(tracing)) {
return 1;
/* Lock-free check if the side trace was already JIT-ed or blacklist-ed in another process */
} else if (t->exit_info[exit_num].flags & (ZEND_JIT_EXIT_JITED|ZEND_JIT_EXIT_BLACKLISTED)) {
static void zend_jit_trace_reset_caches(void)
{
+ JIT_G(tracing) = 0;
}
static void zend_jit_trace_restart(void)