@@ -2,7 +2,6 @@ use self::contracts_data::ContractsData;
22use crate :: runtime_extensions:: call_to_blockifier_runtime_extension:: rpc:: UsedResources ;
33use crate :: runtime_extensions:: common:: sum_syscall_usage;
44use crate :: runtime_extensions:: forge_runtime_extension:: cheatcodes:: replace_bytecode:: ReplaceBytecodeError ;
5- use crate :: runtime_extensions:: forge_runtime_extension:: cheatcodes:: testing:: calculate_steps_from_calls;
65use crate :: runtime_extensions:: {
76 call_to_blockifier_runtime_extension:: {
87 CallToBlockifierRuntime ,
@@ -20,6 +19,7 @@ use crate::runtime_extensions::{
2019} ;
2120use crate :: trace_data:: { CallTrace , CallTraceNode , GasReportData } ;
2221use anyhow:: { Context , Result , anyhow} ;
22+ use blockifier:: blockifier_versioned_constants:: VersionedConstants ;
2323use blockifier:: bouncer:: vm_resources_to_sierra_gas;
2424use blockifier:: context:: TransactionContext ;
2525use blockifier:: execution:: call_info:: {
@@ -881,3 +881,26 @@ pub fn get_all_used_resources(
881881 l1_handler_payload_lengths,
882882 }
883883}
884+
885+ fn calculate_steps_from_calls (
886+ top_call : & Rc < RefCell < CallTrace > > ,
887+ top_call_syscalls : & SyscallUsageMap ,
888+ ) -> usize {
889+ // Resources from inner calls already include syscall resources used in them
890+ let used_resources =
891+ & top_call
892+ . borrow ( )
893+ . nested_calls
894+ . iter ( )
895+ . fold ( ExecutionResources :: default ( ) , |acc, node| match node {
896+ CallTraceNode :: EntryPointCall ( call_trace) => {
897+ & acc + & call_trace. borrow ( ) . used_execution_resources
898+ }
899+ CallTraceNode :: DeployWithoutConstructor => acc,
900+ } ) ;
901+ let total_syscalls_exeucution_resources = & VersionedConstants :: latest_constants ( )
902+ . get_additional_os_syscall_resources ( & top_call_syscalls) ;
903+ let resources_from_calls = used_resources + total_syscalls_exeucution_resources;
904+
905+ resources_from_calls. n_steps
906+ }
0 commit comments