Skip to content

Commit 3278f2f

Browse files
Reorder functions
1 parent 8ce65ab commit 3278f2f

File tree

1 file changed

+76
-76
lines changed

1 file changed

+76
-76
lines changed

vm/src/vm/runners/cairo_runner_2.rs

+76-76
Original file line numberDiff line numberDiff line change
@@ -164,82 +164,6 @@ fn find_entrypoint_of_kind(
164164
.expect("executable had no entrypoint of required kind")
165165
}
166166

167-
fn extend_stack_with_builtins(
168-
stack: &mut Vec<MaybeRelocatable>,
169-
builtins: &[BuiltinName],
170-
runners: &[BuiltinRunner],
171-
) {
172-
let runner_map: HashMap<BuiltinName, &BuiltinRunner> = runners
173-
.iter()
174-
.map(|builtin_runner| (builtin_runner.name(), builtin_runner))
175-
.collect();
176-
for builtin in builtins {
177-
if let Some(builtin_runner) = runner_map.get(&builtin) {
178-
stack.append(&mut builtin_runner.initial_stack());
179-
} else {
180-
stack.push(Felt252::ZERO.into())
181-
}
182-
}
183-
}
184-
185-
fn initialize_builtin_runner_segments(
186-
builtin_runners: &mut [BuiltinRunner],
187-
segments: &mut MemorySegmentManager,
188-
) {
189-
for builtin_runner in builtin_runners.iter_mut() {
190-
builtin_runner.initialize_segments(segments);
191-
}
192-
193-
for builtin_runner in builtin_runners.iter_mut() {
194-
if let BuiltinRunner::Mod(mod_builtin_runner) = builtin_runner {
195-
mod_builtin_runner.initialize_zero_segment(segments);
196-
}
197-
}
198-
}
199-
200-
/// TODO: Remove this once cyclic dependency is fixed.
201-
/// It should not be necessary, but cargo treats executable BuiltinName as a separate type
202-
/// which is why I had to create this adapter function.
203-
pub fn get_entrypoint_builtins(entrypoint: &ExecutableEntryPoint) -> Vec<BuiltinName> {
204-
let mut builtins = Vec::with_capacity(entrypoint.builtins.len());
205-
206-
for builtin in &entrypoint.builtins {
207-
let adapted_builtin = BuiltinName::from_str(builtin.to_str())
208-
.expect("should never fail under the same implementation");
209-
builtins.push(adapted_builtin);
210-
}
211-
212-
builtins
213-
}
214-
215-
/// TODO: Determine if we receive the hint collection or build it ourselves
216-
/// This function was adapted from cairo-lang-runner
217-
pub fn build_hint_collection(
218-
hints: &[(usize, Vec<Hint>)],
219-
program_length: usize,
220-
) -> HintsCollection {
221-
let mut hint_map: BTreeMap<usize, Vec<HintParams>> = BTreeMap::new();
222-
223-
for (offset, offset_hints) in hints {
224-
hint_map.insert(
225-
*offset,
226-
offset_hints
227-
.iter()
228-
.map(|hint| HintParams {
229-
code: hint.representing_string(),
230-
accessible_scopes: vec![],
231-
flow_tracking_data: FlowTrackingData {
232-
ap_tracking: ApTracking::new(),
233-
reference_ids: HashMap::new(),
234-
},
235-
})
236-
.collect(),
237-
);
238-
}
239-
240-
HintsCollection::new(&hint_map, program_length).expect("failed to build hint collection")
241-
}
242-
243167
pub fn check_builtin_order(builtins: &[BuiltinName]) -> Result<(), RunnerError> {
244168
let ordered_builtins = vec![
245169
BuiltinName::output,
@@ -368,6 +292,82 @@ pub fn initialize_builtin_runners(
368292
Ok(builtin_runners)
369293
}
370294

295+
fn initialize_builtin_runner_segments(
296+
builtin_runners: &mut [BuiltinRunner],
297+
segments: &mut MemorySegmentManager,
298+
) {
299+
for builtin_runner in builtin_runners.iter_mut() {
300+
builtin_runner.initialize_segments(segments);
301+
}
302+
303+
for builtin_runner in builtin_runners.iter_mut() {
304+
if let BuiltinRunner::Mod(mod_builtin_runner) = builtin_runner {
305+
mod_builtin_runner.initialize_zero_segment(segments);
306+
}
307+
}
308+
}
309+
310+
fn extend_stack_with_builtins(
311+
stack: &mut Vec<MaybeRelocatable>,
312+
builtins: &[BuiltinName],
313+
runners: &[BuiltinRunner],
314+
) {
315+
let runner_map: HashMap<BuiltinName, &BuiltinRunner> = runners
316+
.iter()
317+
.map(|builtin_runner| (builtin_runner.name(), builtin_runner))
318+
.collect();
319+
for builtin in builtins {
320+
if let Some(builtin_runner) = runner_map.get(&builtin) {
321+
stack.append(&mut builtin_runner.initial_stack());
322+
} else {
323+
stack.push(Felt252::ZERO.into())
324+
}
325+
}
326+
}
327+
328+
/// TODO: Remove this once cyclic dependency is fixed.
329+
/// It should not be necessary, but cargo treats executable BuiltinName as a separate type
330+
/// which is why I had to create this adapter function.
331+
pub fn get_entrypoint_builtins(entrypoint: &ExecutableEntryPoint) -> Vec<BuiltinName> {
332+
let mut builtins = Vec::with_capacity(entrypoint.builtins.len());
333+
334+
for builtin in &entrypoint.builtins {
335+
let adapted_builtin = BuiltinName::from_str(builtin.to_str())
336+
.expect("should never fail under the same implementation");
337+
builtins.push(adapted_builtin);
338+
}
339+
340+
builtins
341+
}
342+
343+
/// TODO: Determine if we receive the hint collection or build it ourselves
344+
/// This function was adapted from cairo-lang-runner
345+
pub fn build_hint_collection(
346+
hints: &[(usize, Vec<Hint>)],
347+
program_length: usize,
348+
) -> HintsCollection {
349+
let mut hint_map: BTreeMap<usize, Vec<HintParams>> = BTreeMap::new();
350+
351+
for (offset, offset_hints) in hints {
352+
hint_map.insert(
353+
*offset,
354+
offset_hints
355+
.iter()
356+
.map(|hint| HintParams {
357+
code: hint.representing_string(),
358+
accessible_scopes: vec![],
359+
flow_tracking_data: FlowTrackingData {
360+
ap_tracking: ApTracking::new(),
361+
reference_ids: HashMap::new(),
362+
},
363+
})
364+
.collect(),
365+
);
366+
}
367+
368+
HintsCollection::new(&hint_map, program_length).expect("failed to build hint collection")
369+
}
370+
371371
#[cfg(test)]
372372
mod tests {
373373
use crate::hint_processor::builtin_hint_processor::builtin_hint_processor_definition::BuiltinHintProcessor;

0 commit comments

Comments
 (0)