@@ -87,6 +87,20 @@ struct RuntimeTestContext<'a> {
8787 elapsed : & ' a Arc < Mutex < Duration > > ,
8888}
8989
90+ fn skip_runtime_test ( path : & Path ) -> bool {
91+ if skip_test ( path) {
92+ return true ;
93+ }
94+
95+ // TODO: Remove this once runtime compilation handles these cases fast enough.
96+ // These generated execution-spec tests are interpreter coverage, but runtime
97+ // mode has to compile hundreds of large/duplicate variants and can exceed CI
98+ // timeouts on slower targets.
99+ path. file_name ( ) . is_some_and ( |name| {
100+ name == "test_stack_overflow.json" || name == "precompsEIP2929Cancun.json"
101+ } )
102+ }
103+
90104/// Execute a test suite file using the runtime backend.
91105///
92106/// For each test unit, enqueue JIT compilation via the backend before executing.
@@ -95,7 +109,7 @@ fn execute_test_suite_runtime(
95109 elapsed : & Arc < Mutex < Duration > > ,
96110 backend : & JitBackend ,
97111) -> Result < ( ) , TestError > {
98- if skip_test ( path) {
112+ if skip_runtime_test ( path) {
99113 return Ok ( ( ) ) ;
100114 }
101115
@@ -183,6 +197,7 @@ fn run_test_worker(
183197 return Ok ( ( ) ) ;
184198 } ;
185199
200+ let t0 = Instant :: now ( ) ;
186201 let result = match mode {
187202 CompileMode :: Interpreter => {
188203 execute_test_suite ( & test_path, & state. elapsed , false , false )
@@ -191,6 +206,10 @@ fn run_test_worker(
191206 execute_test_suite_runtime ( & test_path, & state. elapsed , backend. unwrap ( ) )
192207 }
193208 } ;
209+ let elapsed = t0. elapsed ( ) ;
210+ if elapsed > Duration :: from_secs ( 5 ) {
211+ eprintln ! ( "slow statetest file ({elapsed:?}): {}" , test_path. display( ) ) ;
212+ }
194213
195214 state. console_bar . inc ( 1 ) ;
196215
0 commit comments