@@ -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+
518525static inline void
519526init_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