@@ -132,7 +132,7 @@ static uint32_t zend_jit_exit_point_by_addr(const void *addr)
132
132
return (uint32_t )-1 ;
133
133
}
134
134
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 )
136
136
{
137
137
zend_jit_trace_info * t = & zend_jit_traces [ZEND_JIT_TRACE_NUM ];
138
138
uint32_t exit_point ;
@@ -178,7 +178,13 @@ static uint32_t zend_jit_trace_get_exit_point(const zend_op *to_opline, uint32_t
178
178
&& memcmp (t -> stack_map + t -> exit_info [i ].stack_offset , stack , stack_size * sizeof (zend_jit_trace_stack )) == 0 )) {
179
179
if (t -> exit_info [i ].opline == to_opline
180
180
&& 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
+ ) {
182
188
return i ;
183
189
}
184
190
}
@@ -202,6 +208,15 @@ static uint32_t zend_jit_trace_get_exit_point(const zend_op *to_opline, uint32_t
202
208
t -> exit_info [exit_point ].stack_offset = stack_offset ;
203
209
t -> exit_info [exit_point ].poly_func = (zend_jit_ref_snapshot ){.reg = ZREG_NONE };
204
210
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
205
220
}
206
221
207
222
return exit_point ;
@@ -8096,6 +8111,11 @@ static void zend_jit_dump_exit_info(zend_jit_trace_info *t)
8096
8111
fprintf (stderr , ":unknown(zval_copy(%s))" , zend_reg_name (STACK_REG (stack , j )));
8097
8112
}
8098
8113
}
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
8099
8119
fprintf (stderr , "\n" );
8100
8120
}
8101
8121
}
0 commit comments