https://github.com/python/cpython/commit/27a7160b8b0c59634995787d83df5e7d698b66b6
commit: 27a7160b8b0c59634995787d83df5e7d698b66b6
branch: main
author: Donghee Na <[email protected]>
committer: Fidget-Spinner <[email protected]>
date: 2026-01-20T18:47:38Z
summary:
gh-141504: Move PYTHON_UOPS_OPTIMIZE to policy object (GH-144082)
files:
M Include/internal/pycore_interp_structs.h
M Python/optimizer.c
M Python/pystate.c
diff --git a/Include/internal/pycore_interp_structs.h
b/Include/internal/pycore_interp_structs.h
index f11448b06696ad..723657e4cef10d 100644
--- a/Include/internal/pycore_interp_structs.h
+++ b/Include/internal/pycore_interp_structs.h
@@ -411,6 +411,7 @@ typedef struct _PyOptimizationConfig {
// Optimization flags
bool specialization_enabled;
+ bool uops_optimize_enabled;
} _PyOptimizationConfig;
struct
diff --git a/Python/optimizer.c b/Python/optimizer.c
index ab0ef3db4e4882..15a1eb5a17745b 100644
--- a/Python/optimizer.c
+++ b/Python/optimizer.c
@@ -1514,11 +1514,7 @@ uop_optimize(
_PyBloomFilter *dependencies =
&_tstate->jit_tracer_state->prev_state.dependencies;
_PyUOpInstruction *buffer = _tstate->jit_tracer_state->code_buffer;
OPT_STAT_INC(attempts);
- char *env_var = Py_GETENV("PYTHON_UOPS_OPTIMIZE");
- bool is_noopt = true;
- if (env_var == NULL || *env_var == '\0' || *env_var > '0') {
- is_noopt = false;
- }
+ bool is_noopt = !tstate->interp->opt_config.uops_optimize_enabled;
int curr_stackentries =
_tstate->jit_tracer_state->initial_state.stack_depth;
int length = _tstate->jit_tracer_state->prev_state.code_curr_size;
if (length <= CODE_SIZE_NO_PROGRESS) {
diff --git a/Python/pystate.c b/Python/pystate.c
index 86dee70734a097..89374e16722494 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -522,6 +522,13 @@ is_env_enabled(const char *env_name)
return env && *env != '\0' && *env != '0';
}
+static inline bool
+is_env_disabled(const char *env_name)
+{
+ char *env = Py_GETENV(env_name);
+ return env != NULL && *env == '0';
+}
+
static inline void
init_policy(uint16_t *target, const char *env_name, uint16_t default_value,
long min_value, long max_value)
@@ -619,6 +626,7 @@ init_interpreter(PyInterpreterState *interp,
SIDE_EXIT_INITIAL_BACKOFF, 0, MAX_BACKOFF);
interp->opt_config.specialization_enabled =
!is_env_enabled("PYTHON_SPECIALIZATION_OFF");
+ interp->opt_config.uops_optimize_enabled =
!is_env_disabled("PYTHON_UOPS_OPTIMIZE");
if (interp != &runtime->_main_interpreter) {
/* Fix the self-referential, statically initialized fields. */
interp->dtoa = (struct _dtoa_state)_dtoa_state_INIT(interp);
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]