From dc699dfd6367a7c6a7eebaa7206059ff7cb812f1 Mon Sep 17 00:00:00 2001 From: Donghee Na Date: Wed, 21 Jan 2026 02:05:49 +0900 Subject: [PATCH 1/4] gh-141504: Move PYTHON_UOPS_OPTIMIZE to policy object --- Include/internal/pycore_interp_structs.h | 1 + Python/optimizer.c | 6 +----- Python/pystate.c | 1 + 3 files changed, 3 insertions(+), 5 deletions(-) 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..07c68dd0f4db63 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -619,6 +619,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_enabled("PYTHON_UOPS_OPTIMIZE_OFF"); if (interp != &runtime->_main_interpreter) { /* Fix the self-referential, statically initialized fields. */ interp->dtoa = (struct _dtoa_state)_dtoa_state_INIT(interp); From d218084a3ab134651acb30520a42e1760cb21254 Mon Sep 17 00:00:00 2001 From: Donghee Na Date: Wed, 21 Jan 2026 02:07:18 +0900 Subject: [PATCH 2/4] nit --- Python/pystate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Python/pystate.c b/Python/pystate.c index 07c68dd0f4db63..6f390f4e71810c 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -619,7 +619,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_enabled("PYTHON_UOPS_OPTIMIZE_OFF"); + interp->opt_config.uops_optimize_enabled = !is_env_enabled("PYTHON_UOPS_OPTIMIZE"); if (interp != &runtime->_main_interpreter) { /* Fix the self-referential, statically initialized fields. */ interp->dtoa = (struct _dtoa_state)_dtoa_state_INIT(interp); From 6e5bb6f9529275631c6753cffe73dfb543716b81 Mon Sep 17 00:00:00 2001 From: Donghee Na Date: Wed, 21 Jan 2026 02:23:28 +0900 Subject: [PATCH 3/4] fix --- Python/pystate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Python/pystate.c b/Python/pystate.c index 6f390f4e71810c..fd21c8d1d36267 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -619,7 +619,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_enabled("PYTHON_UOPS_OPTIMIZE"); + interp->opt_config.uops_optimize_enabled = is_env_enabled("PYTHON_UOPS_OPTIMIZE"); if (interp != &runtime->_main_interpreter) { /* Fix the self-referential, statically initialized fields. */ interp->dtoa = (struct _dtoa_state)_dtoa_state_INIT(interp); From 15b759d20ade80b0fc11763e9b435aaf59219d0a Mon Sep 17 00:00:00 2001 From: Donghee Na Date: Wed, 21 Jan 2026 02:48:43 +0900 Subject: [PATCH 4/4] fix --- Python/pystate.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Python/pystate.c b/Python/pystate.c index fd21c8d1d36267..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,7 +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_enabled("PYTHON_UOPS_OPTIMIZE"); + 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);