mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
GH-109369: Add machinery for deoptimizing tier2 executors, both individually and globally. (GH-110384)
This commit is contained in:
parent
32c37fe1ba
commit
52e902ccf0
7 changed files with 353 additions and 2 deletions
|
@ -1582,6 +1582,7 @@ _Py_Instrument(PyCodeObject *code, PyInterpreterState *interp)
|
|||
if (code->co_executors != NULL) {
|
||||
_PyCode_Clear_Executors(code);
|
||||
}
|
||||
_Py_Executors_InvalidateDependency(interp, code);
|
||||
int code_len = (int)Py_SIZE(code);
|
||||
/* code->_co_firsttraceable >= code_len indicates
|
||||
* that no instrumentation can be inserted.
|
||||
|
@ -1803,6 +1804,7 @@ _PyMonitoring_SetEvents(int tool_id, _PyMonitoringEventSet events)
|
|||
return -1;
|
||||
}
|
||||
set_global_version(interp, new_version);
|
||||
_Py_Executors_InvalidateAll(interp);
|
||||
return instrument_all_executing_code_objects(interp);
|
||||
}
|
||||
|
||||
|
@ -1832,6 +1834,7 @@ _PyMonitoring_SetLocalEvents(PyCodeObject *code, int tool_id, _PyMonitoringEvent
|
|||
/* Force instrumentation update */
|
||||
code->_co_instrumentation_version -= MONITORING_VERSION_INCREMENT;
|
||||
}
|
||||
_Py_Executors_InvalidateDependency(interp, code);
|
||||
if (_Py_Instrument(code, interp)) {
|
||||
return -1;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue