mirror of
https://github.com/python/cpython.git
synced 2025-11-03 03:22:27 +00:00
GH-113486: Do not emit spurious PY_UNWIND events for optimized calls to classes. (GH-113680)
This commit is contained in:
parent
ed6ea3ea79
commit
0ae60b66de
6 changed files with 64 additions and 28 deletions
|
|
@ -2111,6 +2111,9 @@ do_monitor_exc(PyThreadState *tstate, _PyInterpreterFrame *frame,
|
|||
_Py_CODEUNIT *instr, int event)
|
||||
{
|
||||
assert(event < _PY_MONITORING_UNGROUPED_EVENTS);
|
||||
if (_PyFrame_GetCode(frame)->co_flags & CO_NO_MONITORING_EVENTS) {
|
||||
return 0;
|
||||
}
|
||||
PyObject *exc = PyErr_GetRaisedException();
|
||||
assert(exc != NULL);
|
||||
int err = _Py_call_instrumentation_arg(tstate, event, frame, instr, exc);
|
||||
|
|
|
|||
|
|
@ -1576,13 +1576,11 @@ _Py_Instrument(PyCodeObject *code, PyInterpreterState *interp)
|
|||
}
|
||||
_Py_Executors_InvalidateDependency(interp, code);
|
||||
int code_len = (int)Py_SIZE(code);
|
||||
/* code->_co_firsttraceable >= code_len indicates
|
||||
* that no instrumentation can be inserted.
|
||||
* Exit early to avoid creating instrumentation
|
||||
/* Exit early to avoid creating instrumentation
|
||||
* data for potential statically allocated code
|
||||
* objects.
|
||||
* See https://github.com/python/cpython/issues/108390 */
|
||||
if (code->_co_firsttraceable >= code_len) {
|
||||
if (code->co_flags & CO_NO_MONITORING_EVENTS) {
|
||||
return 0;
|
||||
}
|
||||
if (update_instrumentation_data(code, interp)) {
|
||||
|
|
|
|||
|
|
@ -2534,7 +2534,7 @@ const struct _PyCode_DEF(8) _Py_InitCleanup = {
|
|||
.co_consts = (PyObject *)&_Py_SINGLETON(tuple_empty),
|
||||
.co_names = (PyObject *)&_Py_SINGLETON(tuple_empty),
|
||||
.co_exceptiontable = (PyObject *)&_Py_SINGLETON(bytes_empty),
|
||||
.co_flags = CO_OPTIMIZED,
|
||||
.co_flags = CO_OPTIMIZED | CO_NO_MONITORING_EVENTS,
|
||||
.co_localsplusnames = (PyObject *)&_Py_SINGLETON(tuple_empty),
|
||||
.co_localspluskinds = (PyObject *)&_Py_SINGLETON(bytes_empty),
|
||||
.co_filename = &_Py_ID(__init__),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue