1
1
use self :: contracts_data:: ContractsData ;
2
2
use crate :: runtime_extensions:: call_to_blockifier_runtime_extension:: rpc:: UsedResources ;
3
- use crate :: runtime_extensions:: common:: { get_syscalls_gas_consumed , sum_syscall_usage} ;
3
+ use crate :: runtime_extensions:: common:: sum_syscall_usage;
4
4
use crate :: runtime_extensions:: forge_runtime_extension:: cheatcodes:: replace_bytecode:: ReplaceBytecodeError ;
5
5
use crate :: runtime_extensions:: {
6
6
call_to_blockifier_runtime_extension:: {
@@ -19,27 +19,23 @@ use crate::runtime_extensions::{
19
19
} ;
20
20
use crate :: state:: { CallTrace , CallTraceNode } ;
21
21
use anyhow:: { Context , Result , anyhow} ;
22
- use blockifier:: blockifier_versioned_constants:: VersionedConstants ;
23
22
use blockifier:: bouncer:: vm_resources_to_sierra_gas;
24
23
use blockifier:: context:: TransactionContext ;
25
- use blockifier:: execution:: call_info:: { CallExecution , CallInfo } ;
24
+ use blockifier:: execution:: call_info:: CallInfo ;
26
25
use blockifier:: execution:: contract_class:: TrackedResource ;
27
- use blockifier:: execution:: entry_point:: CallEntryPoint ;
28
26
use blockifier:: execution:: syscalls:: vm_syscall_utils:: { SyscallSelector , SyscallUsageMap } ;
29
27
use blockifier:: state:: errors:: StateError ;
30
28
use cairo_vm:: vm:: runners:: cairo_runner:: CairoRunner ;
31
29
use cairo_vm:: vm:: {
32
30
errors:: hint_errors:: HintError , runners:: cairo_runner:: ExecutionResources ,
33
31
vm_core:: VirtualMachine ,
34
32
} ;
35
- use conversions:: IntoConv ;
36
33
use conversions:: byte_array:: ByteArray ;
37
34
use conversions:: felt:: { ToShortString , TryInferFormat } ;
38
35
use conversions:: serde:: deserialize:: BufferReader ;
39
36
use conversions:: serde:: serialize:: CairoSerialize ;
40
37
use data_transformer:: cairo_types:: CairoU256 ;
41
38
use rand:: prelude:: StdRng ;
42
- use runtime:: starknet:: constants:: TEST_CONTRACT_CLASS_HASH ;
43
39
use runtime:: {
44
40
CheatcodeHandlingResult , EnhancedHintError , ExtendedRuntime , ExtensionLogic ,
45
41
SyscallHandlingResult ,
@@ -752,15 +748,6 @@ pub fn update_top_call_vm_trace(runtime: &mut ForgeRuntime, cairo_runner: &mut C
752
748
Some ( get_relocated_vm_trace ( cairo_runner) ) ;
753
749
}
754
750
}
755
- fn add_syscall_execution_resources (
756
- versioned_constants : & VersionedConstants ,
757
- execution_resources : & ExecutionResources ,
758
- syscall_usage : & SyscallUsageMap ,
759
- ) -> ExecutionResources {
760
- let mut total_vm_usage = execution_resources. filter_unused_builtins ( ) ;
761
- total_vm_usage += & versioned_constants. get_additional_os_syscall_resources ( syscall_usage) ;
762
- total_vm_usage
763
- }
764
751
765
752
fn add_sierra_gas_resources ( top_call : & Rc < RefCell < CallTrace > > ) -> u64 {
766
753
let mut gas_consumed = top_call. borrow ( ) . gas_consumed ;
@@ -788,78 +775,23 @@ fn add_execution_resources(top_call: Rc<RefCell<CallTrace>>) -> ExecutionResourc
788
775
789
776
#[ must_use]
790
777
pub fn get_all_used_resources (
791
- runtime : ForgeRuntime ,
778
+ call_info : & CallInfo ,
779
+ trace : & Rc < RefCell < CallTrace > > ,
792
780
transaction_context : & TransactionContext ,
793
- tracked_resource : TrackedResource ,
794
781
) -> UsedResources {
795
- let starknet_runtime = runtime. extended_runtime . extended_runtime . extended_runtime ;
796
- let top_call_l2_to_l1_messages = starknet_runtime. hint_handler . base . l2_to_l1_messages ;
797
- let top_call_events = starknet_runtime. hint_handler . base . events ;
798
-
799
782
let versioned_constants = transaction_context. block_context . versioned_constants ( ) ;
800
783
801
- // used just to obtain payloads of L2 -> L1 messages
802
- let runtime_call_info = CallInfo {
803
- execution : CallExecution {
804
- l2_to_l1_messages : top_call_l2_to_l1_messages,
805
- events : top_call_events,
806
- ..Default :: default ( )
807
- } ,
808
- call : CallEntryPoint {
809
- class_hash : Some ( Felt :: from_hex ( TEST_CONTRACT_CLASS_HASH ) . unwrap ( ) . into_ ( ) ) ,
810
- ..Default :: default ( )
811
- } ,
812
- inner_calls : starknet_runtime. hint_handler . base . inner_calls ,
813
- tracked_resource,
814
- ..Default :: default ( )
815
- } ;
816
- let summary = runtime_call_info. summarize ( versioned_constants) ;
817
- let l2_to_l1_payload_lengths = summary. l2_to_l1_payload_lengths ;
818
-
819
- let l1_handler_payload_lengths =
820
- get_l1_handlers_payloads_lengths ( & runtime_call_info. inner_calls ) ;
784
+ let summary = call_info. summarize ( versioned_constants) ;
821
785
822
- // call representing the test code
823
- let top_call = runtime
824
- . extended_runtime
825
- . extended_runtime
826
- . extension
827
- . cheatnet_state
828
- . trace_data
829
- . current_call_stack
830
- . top ( ) ;
786
+ let l1_handler_payload_lengths = get_l1_handlers_payloads_lengths ( & call_info. inner_calls ) ;
831
787
832
- let mut execution_resources = top_call. borrow ( ) . used_execution_resources . clone ( ) ;
833
- let mut sierra_gas_consumed = top_call. borrow ( ) . gas_consumed ;
834
- let top_call_syscalls = top_call. borrow ( ) . get_total_used_syscalls ( ) ;
835
-
836
- execution_resources = add_syscall_execution_resources (
837
- versioned_constants,
838
- & execution_resources,
839
- & top_call. borrow ( ) . used_syscalls_vm_resources ,
840
- ) ;
841
- sierra_gas_consumed += get_syscalls_gas_consumed (
842
- & top_call. borrow ( ) . used_syscalls_sierra_gas ,
843
- versioned_constants,
844
- ) ;
845
-
846
- let events = runtime_call_info
847
- . iter ( ) // This method iterates over inner calls as well
848
- . flat_map ( |call_info| {
849
- call_info
850
- . execution
851
- . events
852
- . iter ( )
853
- . map ( |evt| evt. event . clone ( ) )
854
- } )
855
- . collect ( ) ;
788
+ let top_call_syscalls = trace. borrow ( ) . get_total_used_syscalls ( ) ;
856
789
857
790
UsedResources {
858
- events,
859
791
syscall_usage : top_call_syscalls,
860
- execution_resources,
861
- gas_consumed : GasAmount :: from ( sierra_gas_consumed) ,
792
+ execution_resources : call_info. resources . clone ( ) ,
793
+ gas_consumed : GasAmount :: from ( call_info. execution . gas_consumed ) ,
794
+ execution_summary : summary,
862
795
l1_handler_payload_lengths,
863
- l2_to_l1_payload_lengths,
864
796
}
865
797
}
0 commit comments