@@ -132,7 +132,7 @@ static uint32_t zend_jit_exit_point_by_addr(const void *addr)
132132 return (uint32_t )-1 ;
133133}
134134
135- static uint32_t zend_jit_trace_get_exit_point (const zend_op * to_opline , uint32_t flags )
135+ static uint32_t _zend_jit_trace_get_exit_point (const zend_op * to_opline , uint32_t flags ZEND_FILE_LINE_DC )
136136{
137137 zend_jit_trace_info * t = & zend_jit_traces [ZEND_JIT_TRACE_NUM ];
138138 uint32_t exit_point ;
@@ -178,7 +178,13 @@ static uint32_t zend_jit_trace_get_exit_point(const zend_op *to_opline, uint32_t
178178 && memcmp (t -> stack_map + t -> exit_info [i ].stack_offset , stack , stack_size * sizeof (zend_jit_trace_stack )) == 0 )) {
179179 if (t -> exit_info [i ].opline == to_opline
180180 && t -> exit_info [i ].flags == flags
181- && t -> exit_info [i ].stack_size == stack_size ) {
181+ && t -> exit_info [i ].stack_size == stack_size
182+ #if ZEND_DEBUG
183+ && (((JIT_G (debug ) & ZEND_JIT_DEBUG_TRACE_EXIT_INFO_SRC ) == 0 )
184+ || (strcmp (t -> exit_info [i ].filename , __zend_filename ) == 0
185+ && t -> exit_info [i ].lineno == __zend_lineno ))
186+ #endif
187+ ) {
182188 return i ;
183189 }
184190 }
@@ -202,6 +208,15 @@ static uint32_t zend_jit_trace_get_exit_point(const zend_op *to_opline, uint32_t
202208 t -> exit_info [exit_point ].stack_offset = stack_offset ;
203209 t -> exit_info [exit_point ].poly_func = (zend_jit_ref_snapshot ){.reg = ZREG_NONE };
204210 t -> exit_info [exit_point ].poly_this = (zend_jit_ref_snapshot ){.reg = ZREG_NONE };
211+ #if ZEND_DEBUG
212+ if ((JIT_G (debug ) & ZEND_JIT_DEBUG_TRACE_EXIT_INFO_SRC ) != 0 ) {
213+ t -> exit_info [exit_point ].filename = __zend_filename ;
214+ t -> exit_info [exit_point ].lineno = __zend_lineno ;
215+ } else {
216+ t -> exit_info [exit_point ].filename = NULL ;
217+ t -> exit_info [exit_point ].lineno = 0 ;
218+ }
219+ #endif
205220 }
206221
207222 return exit_point ;
@@ -8096,6 +8111,11 @@ static void zend_jit_dump_exit_info(zend_jit_trace_info *t)
80968111 fprintf (stderr , ":unknown(zval_copy(%s))" , zend_reg_name (STACK_REG (stack , j )));
80978112 }
80988113 }
8114+ #if ZEND_DEBUG
8115+ if ((JIT_G (debug ) & ZEND_JIT_DEBUG_TRACE_EXIT_INFO_SRC ) != 0 ) {
8116+ fprintf (stderr , " %s:%d" , t -> exit_info [i ].filename , t -> exit_info [i ].lineno );
8117+ }
8118+ #endif
80998119 fprintf (stderr , "\n" );
81008120 }
81018121}
0 commit comments