@@ -143,22 +143,23 @@ dummy_func(
143143
144144 tier1 inst (RESUME , (-- )) {
145145 assert (frame == tstate -> current_frame );
146- uintptr_t global_version =
147- _Py_atomic_load_uintptr_relaxed (& tstate -> eval_breaker ) &
148- ~_PY_EVAL_EVENTS_MASK ;
149- uintptr_t code_version = _PyFrame_GetCode (frame )-> _co_instrumentation_version ;
150- assert ((code_version & 255 ) == 0 );
151- if (code_version != global_version ) {
152- int err = _Py_Instrument (_PyFrame_GetCode (frame ), tstate -> interp );
153- ERROR_IF (err , error );
154- next_instr = this_instr ;
155- }
156- else {
157- if ((oparg & RESUME_OPARG_LOCATION_MASK ) < RESUME_AFTER_YIELD_FROM ) {
158- CHECK_EVAL_BREAKER ();
146+ if (tstate -> tracing == 0 ) {
147+ uintptr_t global_version =
148+ _Py_atomic_load_uintptr_relaxed (& tstate -> eval_breaker ) &
149+ ~_PY_EVAL_EVENTS_MASK ;
150+ uintptr_t code_version = _PyFrame_GetCode (frame )-> _co_instrumentation_version ;
151+ assert ((code_version & 255 ) == 0 );
152+ if (code_version != global_version ) {
153+ int err = _Py_Instrument (_PyFrame_GetCode (frame ), tstate -> interp );
154+ ERROR_IF (err , error );
155+ next_instr = this_instr ;
156+ DISPATCH ();
159157 }
160- this_instr -> op .code = RESUME_CHECK ;
161158 }
159+ if ((oparg & RESUME_OPARG_LOCATION_MASK ) < RESUME_AFTER_YIELD_FROM ) {
160+ CHECK_EVAL_BREAKER ();
161+ }
162+ this_instr -> op .code = RESUME_CHECK ;
162163 }
163164
164165 inst (RESUME_CHECK , (-- )) {
@@ -169,13 +170,13 @@ dummy_func(
169170 uintptr_t eval_breaker = _Py_atomic_load_uintptr_relaxed (& tstate -> eval_breaker );
170171 uintptr_t version = _PyFrame_GetCode (frame )-> _co_instrumentation_version ;
171172 assert ((version & _PY_EVAL_EVENTS_MASK ) == 0 );
172- DEOPT_IF (eval_breaker != version );
173+ DEOPT_IF (eval_breaker != version && tstate -> tracing == 0 );
173174 }
174175
175176 inst (INSTRUMENTED_RESUME , (-- )) {
176177 uintptr_t global_version = _Py_atomic_load_uintptr_relaxed (& tstate -> eval_breaker ) & ~_PY_EVAL_EVENTS_MASK ;
177178 uintptr_t code_version = _PyFrame_GetCode (frame )-> _co_instrumentation_version ;
178- if (code_version != global_version ) {
179+ if (code_version != global_version && tstate -> tracing == 0 ) {
179180 if (_Py_Instrument (_PyFrame_GetCode (frame ), tstate -> interp )) {
180181 GOTO_ERROR (error );
181182 }
0 commit comments