Skip to content

Commit c8e4b7f

Browse files
committed
Address code review
1 parent 3dbdd01 commit c8e4b7f

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

Python/pystate.c

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,13 @@ _Py_LazyJitShim(
515515
to the other dynamically initialized fields.
516516
*/
517517

518+
static inline bool
519+
is_env_enabled(const char *env_name)
520+
{
521+
char *env = Py_GETENV(env_name);
522+
return env && *env != '\0' && *env != '0';
523+
}
524+
518525
static inline void
519526
init_policy(uint16_t *target, const char *env_name, uint16_t default_value,
520527
long min_value, long max_value)
@@ -589,29 +596,31 @@ init_interpreter(PyInterpreterState *interp,
589596
interp->executor_creation_counter = JIT_CLEANUP_THRESHOLD;
590597

591598
// Initialize optimization configuration from environment variables
599+
// PYTHON_JIT_STRESS sets aggressive defaults for testing, but can be overridden
600+
uint16_t jump_default = JUMP_BACKWARD_INITIAL_VALUE;
601+
uint16_t side_exit_default = SIDE_EXIT_INITIAL_VALUE;
602+
603+
if (is_env_enabled("PYTHON_JIT_STRESS")) {
604+
jump_default = 63;
605+
side_exit_default = 63;
606+
}
607+
592608
init_policy(&interp->opt_config.jump_backward_initial_value,
593609
"PYTHON_JIT_JUMP_BACKWARD_INITIAL_VALUE",
594-
JUMP_BACKWARD_INITIAL_VALUE, 1, MAX_VALUE);
610+
jump_default, 1, MAX_VALUE);
595611
init_policy(&interp->opt_config.jump_backward_initial_backoff,
596612
"PYTHON_JIT_JUMP_BACKWARD_INITIAL_BACKOFF",
597613
JUMP_BACKWARD_INITIAL_BACKOFF, 0, MAX_BACKOFF);
598614
#ifdef _Py_TIER2
599615
init_policy(&interp->opt_config.side_exit_initial_value,
600616
"PYTHON_JIT_SIDE_EXIT_INITIAL_VALUE",
601-
SIDE_EXIT_INITIAL_VALUE, 1, MAX_VALUE);
617+
side_exit_default, 1, MAX_VALUE);
602618
init_policy(&interp->opt_config.side_exit_initial_backoff,
603619
"PYTHON_JIT_SIDE_EXIT_INITIAL_BACKOFF",
604620
SIDE_EXIT_INITIAL_BACKOFF, 0, MAX_BACKOFF);
605621
#endif
606622

607-
// Check if specialization should be disabled
608-
// If PYTHON_SPECIALIZATION_OFF is set to any non-empty value, disable specialization
609-
char *spec_off_env = Py_GETENV("PYTHON_SPECIALIZATION_OFF");
610-
if (spec_off_env && *spec_off_env != '\0' && *spec_off_env != '0') {
611-
interp->opt_config.specialization_enabled = false;
612-
} else {
613-
interp->opt_config.specialization_enabled = true;
614-
}
623+
interp->opt_config.specialization_enabled = !is_env_enabled("PYTHON_SPECIALIZATION_OFF");
615624
if (interp != &runtime->_main_interpreter) {
616625
/* Fix the self-referential, statically initialized fields. */
617626
interp->dtoa = (struct _dtoa_state)_dtoa_state_INIT(interp);

0 commit comments

Comments
 (0)