mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
[3.12] GH-106897: Add RERAISE
event to sys.monitoring
. (GH-107291) (GH-107346)
* Ensures that exception handling events are balanced. Each [re]raise event has a matching unwind/handled event.
This commit is contained in:
parent
4014869b4b
commit
3b1a4c1842
9 changed files with 1407 additions and 1206 deletions
|
@ -185,6 +185,9 @@ lltrace_resume_frame(_PyInterpreterFrame *frame)
|
|||
static void monitor_raise(PyThreadState *tstate,
|
||||
_PyInterpreterFrame *frame,
|
||||
_Py_CODEUNIT *instr);
|
||||
static void monitor_reraise(PyThreadState *tstate,
|
||||
_PyInterpreterFrame *frame,
|
||||
_Py_CODEUNIT *instr);
|
||||
static int monitor_stop_iteration(PyThreadState *tstate,
|
||||
_PyInterpreterFrame *frame,
|
||||
_Py_CODEUNIT *instr);
|
||||
|
@ -923,7 +926,6 @@ error:
|
|||
}
|
||||
}
|
||||
monitor_raise(tstate, frame, next_instr-1);
|
||||
|
||||
exception_unwind:
|
||||
{
|
||||
/* We can't use frame->f_lasti here, as RERAISE may have set it */
|
||||
|
@ -2037,6 +2039,16 @@ monitor_raise(PyThreadState *tstate, _PyInterpreterFrame *frame,
|
|||
do_monitor_exc(tstate, frame, instr, PY_MONITORING_EVENT_RAISE);
|
||||
}
|
||||
|
||||
static void
|
||||
monitor_reraise(PyThreadState *tstate, _PyInterpreterFrame *frame,
|
||||
_Py_CODEUNIT *instr)
|
||||
{
|
||||
if (no_tools_for_event(tstate, frame, PY_MONITORING_EVENT_RERAISE)) {
|
||||
return;
|
||||
}
|
||||
do_monitor_exc(tstate, frame, instr, PY_MONITORING_EVENT_RERAISE);
|
||||
}
|
||||
|
||||
static int
|
||||
monitor_stop_iteration(PyThreadState *tstate, _PyInterpreterFrame *frame,
|
||||
_Py_CODEUNIT *instr)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue