@@ -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,12 @@ 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+ && strcmp (t -> exit_info [i ].filename , __zend_filename ) == 0
184+ && t -> exit_info [i ].lineno == __zend_lineno
185+ #endif
186+ ) {
182187 return i ;
183188 }
184189 }
@@ -202,6 +207,10 @@ static uint32_t zend_jit_trace_get_exit_point(const zend_op *to_opline, uint32_t
202207 t -> exit_info [exit_point ].stack_offset = stack_offset ;
203208 t -> exit_info [exit_point ].poly_func = (zend_jit_ref_snapshot ){.reg = ZREG_NONE };
204209 t -> exit_info [exit_point ].poly_this = (zend_jit_ref_snapshot ){.reg = ZREG_NONE };
210+ #if ZEND_DEBUG
211+ t -> exit_info [exit_point ].filename = __zend_filename ;
212+ t -> exit_info [exit_point ].lineno = __zend_lineno ;
213+ #endif
205214 }
206215
207216 return exit_point ;
@@ -8096,6 +8105,9 @@ static void zend_jit_dump_exit_info(zend_jit_trace_info *t)
80968105 fprintf (stderr , ":unknown(zval_copy(%s))" , zend_reg_name (STACK_REG (stack , j )));
80978106 }
80988107 }
8108+ #if ZEND_DEBUG
8109+ fprintf (stderr , " %s:%d" , t -> exit_info [i ].filename , t -> exit_info [i ].lineno );
8110+ #endif
80998111 fprintf (stderr , "\n" );
81008112 }
81018113}
0 commit comments