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 ,
@@ -730,15 +726,6 @@ pub fn update_top_call_vm_trace(runtime: &mut ForgeRuntime, cairo_runner: &mut C
730
726
Some ( get_relocated_vm_trace ( cairo_runner) ) ;
731
727
}
732
728
}
733
- fn add_syscall_execution_resources (
734
- versioned_constants : & VersionedConstants ,
735
- execution_resources : & ExecutionResources ,
736
- syscall_usage : & SyscallUsageMap ,
737
- ) -> ExecutionResources {
738
- let mut total_vm_usage = execution_resources. filter_unused_builtins ( ) ;
739
- total_vm_usage += & versioned_constants. get_additional_os_syscall_resources ( syscall_usage) ;
740
- total_vm_usage
741
- }
742
729
743
730
fn add_sierra_gas_resources ( top_call : & Rc < RefCell < CallTrace > > ) -> u64 {
744
731
let mut gas_consumed = top_call. borrow ( ) . gas_consumed ;
@@ -766,78 +753,23 @@ fn add_execution_resources(top_call: Rc<RefCell<CallTrace>>) -> ExecutionResourc
766
753
767
754
#[ must_use]
768
755
pub fn get_all_used_resources (
769
- runtime : ForgeRuntime ,
756
+ call_info : & CallInfo ,
757
+ trace : & Rc < RefCell < CallTrace > > ,
770
758
transaction_context : & TransactionContext ,
771
- tracked_resource : TrackedResource ,
772
759
) -> UsedResources {
773
- let starknet_runtime = runtime. extended_runtime . extended_runtime . extended_runtime ;
774
- let top_call_l2_to_l1_messages = starknet_runtime. hint_handler . base . l2_to_l1_messages ;
775
- let top_call_events = starknet_runtime. hint_handler . base . events ;
776
-
777
760
let versioned_constants = transaction_context. block_context . versioned_constants ( ) ;
778
761
779
- // used just to obtain payloads of L2 -> L1 messages
780
- let runtime_call_info = CallInfo {
781
- execution : CallExecution {
782
- l2_to_l1_messages : top_call_l2_to_l1_messages,
783
- events : top_call_events,
784
- ..Default :: default ( )
785
- } ,
786
- call : CallEntryPoint {
787
- class_hash : Some ( Felt :: from_hex ( TEST_CONTRACT_CLASS_HASH ) . unwrap ( ) . into_ ( ) ) ,
788
- ..Default :: default ( )
789
- } ,
790
- inner_calls : starknet_runtime. hint_handler . base . inner_calls ,
791
- tracked_resource,
792
- ..Default :: default ( )
793
- } ;
794
- let summary = runtime_call_info. summarize ( versioned_constants) ;
795
- let l2_to_l1_payload_lengths = summary. l2_to_l1_payload_lengths ;
796
-
797
- let l1_handler_payload_lengths =
798
- get_l1_handlers_payloads_lengths ( & runtime_call_info. inner_calls ) ;
762
+ let summary = call_info. summarize ( versioned_constants) ;
799
763
800
- // call representing the test code
801
- let top_call = runtime
802
- . extended_runtime
803
- . extended_runtime
804
- . extension
805
- . cheatnet_state
806
- . trace_data
807
- . current_call_stack
808
- . top ( ) ;
764
+ let l1_handler_payload_lengths = get_l1_handlers_payloads_lengths ( & call_info. inner_calls ) ;
809
765
810
- let mut execution_resources = top_call. borrow ( ) . used_execution_resources . clone ( ) ;
811
- let mut sierra_gas_consumed = top_call. borrow ( ) . gas_consumed ;
812
- let top_call_syscalls = top_call. borrow ( ) . get_total_used_syscalls ( ) ;
813
-
814
- execution_resources = add_syscall_execution_resources (
815
- versioned_constants,
816
- & execution_resources,
817
- & top_call. borrow ( ) . used_syscalls_vm_resources ,
818
- ) ;
819
- sierra_gas_consumed += get_syscalls_gas_consumed (
820
- & top_call. borrow ( ) . used_syscalls_sierra_gas ,
821
- versioned_constants,
822
- ) ;
823
-
824
- let events = runtime_call_info
825
- . iter ( ) // This method iterates over inner calls as well
826
- . flat_map ( |call_info| {
827
- call_info
828
- . execution
829
- . events
830
- . iter ( )
831
- . map ( |evt| evt. event . clone ( ) )
832
- } )
833
- . collect ( ) ;
766
+ let top_call_syscalls = trace. borrow ( ) . get_total_used_syscalls ( ) ;
834
767
835
768
UsedResources {
836
- events,
837
769
syscall_usage : top_call_syscalls,
838
- execution_resources,
839
- gas_consumed : GasAmount :: from ( sierra_gas_consumed) ,
770
+ execution_resources : call_info. resources . clone ( ) ,
771
+ gas_consumed : GasAmount :: from ( call_info. execution . gas_consumed ) ,
772
+ execution_summary : summary,
840
773
l1_handler_payload_lengths,
841
- l2_to_l1_payload_lengths,
842
774
}
843
775
}
0 commit comments