mirror of
https://github.com/python/cpython.git
synced 2025-10-21 06:02:21 +00:00
gh-104584: Baby steps towards generating and executing traces (#105924)
Added a new, experimental, tracing optimizer and interpreter (a.k.a. "tier 2"). This currently pessimizes, so don't use yet -- this is infrastructure so we can experiment with optimizing passes. To enable it, pass ``-Xuops`` or set ``PYTHONUOPS=1``. To get debug output, set ``PYTHONUOPSDEBUG=N`` where ``N`` is a debug level (0-4, where 0 is no debug output and 4 is excessively verbose). All of this code is likely to change dramatically before the 3.13 feature freeze. But this is a first step.
This commit is contained in:
parent
d3af83b934
commit
51fc725117
21 changed files with 2559 additions and 305 deletions
|
@ -1181,6 +1181,19 @@ init_interp_main(PyThreadState *tstate)
|
|||
#endif
|
||||
}
|
||||
|
||||
// Turn on experimental tier 2 (uops-based) optimizer
|
||||
if (is_main_interp) {
|
||||
char *envvar = Py_GETENV("PYTHONUOPS");
|
||||
int enabled = envvar != NULL && *envvar > '0';
|
||||
if (_Py_get_xoption(&config->xoptions, L"uops") != NULL) {
|
||||
enabled = 1;
|
||||
}
|
||||
if (enabled) {
|
||||
PyObject *opt = PyUnstable_Optimizer_NewUOpOptimizer();
|
||||
PyUnstable_SetOptimizer((_PyOptimizerObject *)opt);
|
||||
}
|
||||
}
|
||||
|
||||
assert(!_PyErr_Occurred(tstate));
|
||||
|
||||
return _PyStatus_OK();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue