Commit 20faa68b authored by George King's avatar George King Committed by Nick Coghlan

Move opcode tracing to occur after the possible update to f_lineno. (GH-3798)

parent 0b6a118a
...@@ -4416,10 +4416,6 @@ maybe_call_line_trace(Py_tracefunc func, PyObject *obj, ...@@ -4416,10 +4416,6 @@ maybe_call_line_trace(Py_tracefunc func, PyObject *obj,
*instr_lb = bounds.ap_lower; *instr_lb = bounds.ap_lower;
*instr_ub = bounds.ap_upper; *instr_ub = bounds.ap_upper;
} }
/* Always emit an opcode event if we're tracing all opcodes. */
if (frame->f_trace_opcodes) {
result = call_trace(func, obj, tstate, frame, PyTrace_OPCODE, Py_None);
}
/* If the last instruction falls at the start of a line or if it /* If the last instruction falls at the start of a line or if it
represents a jump backwards, update the frame's line number and represents a jump backwards, update the frame's line number and
then call the trace function if we're tracing source lines. then call the trace function if we're tracing source lines.
...@@ -4430,6 +4426,10 @@ maybe_call_line_trace(Py_tracefunc func, PyObject *obj, ...@@ -4430,6 +4426,10 @@ maybe_call_line_trace(Py_tracefunc func, PyObject *obj,
result = call_trace(func, obj, tstate, frame, PyTrace_LINE, Py_None); result = call_trace(func, obj, tstate, frame, PyTrace_LINE, Py_None);
} }
} }
/* Always emit an opcode event if we're tracing all opcodes. */
if (frame->f_trace_opcodes) {
result = call_trace(func, obj, tstate, frame, PyTrace_OPCODE, Py_None);
}
*instr_prev = frame->f_lasti; *instr_prev = frame->f_lasti;
return result; return result;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment