GH-109369: Add machinery for deoptimizing tier2 executors, both individually and globally. (GH-110384)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user