_(DEEP_RECURSION, "deep recursion") \
_(LOOP_UNROLL, "loop unroll limit reached") \
_(LOOP_EXIT, "exit from loop") \
+ _(RECURSION_EXIT, "return from recursive function") \
_(BLACK_LIST, "trace blacklisted") \
_(INNER_LOOP, "inner loop") /* trace it */ \
_(COMPILED_LOOP, "compiled loop") \
If this doesn't work terminate it. */
stop = ZEND_JIT_TRACE_STOP_LOOP_EXIT;
break;
+ } else if (start & ZEND_JIT_TRACE_START_ENTER
+ && EX(prev_execute_data)
+ && EX(func) == EX(prev_execute_data)->func
+ && zend_jit_trace_bad_stop_event(orig_opline, JIT_G(blacklist_root_trace) - 1) !=
+ ZEND_JIT_TRACE_STOP_RECURSION_EXIT) {
+ stop = ZEND_JIT_TRACE_STOP_RECURSION_EXIT;
+ break;
} else {
stop = ZEND_JIT_TRACE_STOP_RETURN;
break;