@@ -12,7 +12,7 @@ use crate::{
1212 } ,
1313 runners:: {
1414 cairo_pie:: CairoPie ,
15- cairo_runner:: { CairoRunner , RunnerMode } ,
15+ cairo_runner:: { CairoRunConfig , CairoRunner , RunnerMode } ,
1616 } ,
1717 security:: verify_secure_runner,
1818 trace:: trace_entry:: RelocatedTraceEntry ,
@@ -72,6 +72,23 @@ impl Default for Cairo0RunConfig<'_> {
7272 }
7373}
7474
75+ impl Cairo0RunConfig < ' _ > {
76+ pub fn run_config ( & self ) -> Result < CairoRunConfig , RunnerError > {
77+ let runner_mode = if self . proof_mode {
78+ RunnerMode :: ProofModeCanonical
79+ } else {
80+ RunnerMode :: ExecutionMode
81+ } ;
82+ CairoRunConfig :: new (
83+ CairoLayout :: new ( self . layout , self . dynamic_layout_params . clone ( ) ) ?,
84+ self . trace_enabled ,
85+ self . disable_trace_padding ,
86+ runner_mode,
87+ )
88+ }
89+ }
90+
91+ #[ derive( Clone ) ]
7592pub struct StwoCairoRunConfig {
7693 pub trace_enabled : bool ,
7794 pub relocate_mem : bool ,
@@ -96,6 +113,17 @@ impl Default for StwoCairoRunConfig {
96113 }
97114}
98115
116+ impl StwoCairoRunConfig {
117+ pub fn run_config ( & self ) -> Result < CairoRunConfig , RunnerError > {
118+ CairoRunConfig :: new (
119+ CairoLayout :: all_cairo_stwo_instance ( ) ,
120+ self . trace_enabled ,
121+ self . disable_trace_padding ,
122+ self . runner_mode . clone ( ) ,
123+ )
124+ }
125+ }
126+
99127#[ allow( clippy:: result_large_err) ]
100128pub fn cairo_run_stwo (
101129 program : & Program ,
@@ -107,12 +135,7 @@ pub fn cairo_run_stwo(
107135 let _span = span ! ( Level :: INFO , "cairo run stwo" ) . entered ( ) ;
108136
109137 let proof_mode = cairo_run_config. runner_mode != RunnerMode :: ExecutionMode ;
110- let mut cairo_runner = CairoRunner :: new_stwo (
111- program,
112- cairo_run_config. runner_mode . clone ( ) ,
113- cairo_run_config. trace_enabled ,
114- cairo_run_config. disable_trace_padding ,
115- ) ?;
138+ let mut cairo_runner = CairoRunner :: new_stwo ( program, & cairo_run_config. run_config ( ) ?) ?;
116139 cairo_runner. exec_scopes = exec_scopes;
117140
118141 let end = cairo_runner. initialize_stwo ( allowed_builtins) ?;
@@ -166,17 +189,7 @@ pub fn cairo_run_program_with_initial_scope(
166189 . allow_missing_builtins
167190 . unwrap_or ( cairo_run_config. proof_mode ) ;
168191
169- let mut cairo_runner = CairoRunner :: new (
170- program,
171- CairoLayout :: new (
172- cairo_run_config. layout ,
173- cairo_run_config. dynamic_layout_params . clone ( ) ,
174- )
175- . map_err ( RunnerError :: from) ?,
176- cairo_run_config. proof_mode ,
177- cairo_run_config. trace_enabled ,
178- cairo_run_config. disable_trace_padding ,
179- ) ?;
192+ let mut cairo_runner = CairoRunner :: new ( program, & cairo_run_config. run_config ( ) ?) ?;
180193
181194 cairo_runner. exec_scopes = exec_scopes;
182195
@@ -276,17 +289,7 @@ pub fn cairo_run_pie(
276289 let allow_missing_builtins = cairo_run_config. allow_missing_builtins . unwrap_or_default ( ) ;
277290
278291 let program = Program :: from_stripped_program ( & pie. metadata . program ) ;
279- let mut cairo_runner = CairoRunner :: new (
280- & program,
281- CairoLayout :: new (
282- cairo_run_config. layout ,
283- cairo_run_config. dynamic_layout_params . clone ( ) ,
284- )
285- . map_err ( RunnerError :: from) ?,
286- false ,
287- cairo_run_config. trace_enabled ,
288- cairo_run_config. disable_trace_padding ,
289- ) ?;
292+ let mut cairo_runner = CairoRunner :: new ( & program, & cairo_run_config. run_config ( ) ?) ?;
290293
291294 let end = cairo_runner. initialize ( allow_missing_builtins) ?;
292295 cairo_runner. vm . finalize_segments_by_cairo_pie ( pie) ;
@@ -363,9 +366,11 @@ pub fn cairo_run_pie_stwo(
363366 let program = Program :: from_stripped_program ( & pie. metadata . program ) ;
364367 let mut cairo_runner = CairoRunner :: new_stwo (
365368 & program,
366- RunnerMode :: ExecutionMode ,
367- cairo_run_config. trace_enabled ,
368- cairo_run_config. disable_trace_padding ,
369+ & StwoCairoRunConfig {
370+ runner_mode : RunnerMode :: ExecutionMode ,
371+ ..cairo_run_config. clone ( )
372+ }
373+ . run_config ( ) ?,
369374 ) ?;
370375
371376 let end = cairo_runner. initialize_stwo ( allowed_builtins) ?;
@@ -437,17 +442,7 @@ pub fn cairo_run_fuzzed_program(
437442 . allow_missing_builtins
438443 . unwrap_or ( cairo_run_config. proof_mode ) ;
439444
440- let mut cairo_runner = CairoRunner :: new (
441- & program,
442- CairoLayout :: new (
443- cairo_run_config. layout ,
444- cairo_run_config. dynamic_layout_params . clone ( ) ,
445- )
446- . map_err ( RunnerError :: from) ?,
447- cairo_run_config. proof_mode ,
448- cairo_run_config. trace_enabled ,
449- cairo_run_config. disable_trace_padding ,
450- ) ?;
445+ let mut cairo_runner = CairoRunner :: new ( & program, & cairo_run_config. run_config ( ) ?) ?;
451446
452447 let _end = cairo_runner. initialize ( allow_missing_builtins) ?;
453448
0 commit comments