Skip to content

Commit 3c49b01

Browse files
blockifier: have total_vm_resources return ExtendedExecutionResources
1 parent 5543f6f commit 3c49b01

File tree

2 files changed

+34
-7
lines changed

2 files changed

+34
-7
lines changed

crates/blockifier/src/execution/call_info.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,28 @@ pub struct ExtendedExecutionResources {
280280
pub opcode_instance_counter: OpcodeCounterMap,
281281
}
282282

283+
impl AddAssign<&ExtendedExecutionResources> for ExtendedExecutionResources {
284+
fn add_assign(&mut self, other: &ExtendedExecutionResources) {
285+
self.vm_resources += &other.vm_resources;
286+
for (opcode, count) in &other.opcode_instance_counter {
287+
*self.opcode_instance_counter.entry(opcode.clone()).or_insert(0) += count;
288+
}
289+
}
290+
}
291+
292+
impl Add<&ExtendedExecutionResources> for &ExtendedExecutionResources {
293+
type Output = ExtendedExecutionResources;
294+
295+
fn add(self, other: &ExtendedExecutionResources) -> ExtendedExecutionResources {
296+
let mut result = ExtendedExecutionResources {
297+
vm_resources: self.vm_resources.clone(),
298+
opcode_instance_counter: self.opcode_instance_counter.clone(),
299+
};
300+
result += other;
301+
result
302+
}
303+
}
304+
283305
#[cfg_attr(feature = "transaction_serde", derive(serde::Deserialize))]
284306
#[derive(Clone, Debug, Eq, Hash, PartialEq, Serialize, Ord, PartialOrd)]
285307
pub enum OpcodeName {

crates/blockifier/src/execution/entry_point_execution.rs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use cairo_vm::vm::errors::cairo_run_errors::CairoRunError;
77
use cairo_vm::vm::errors::memory_errors::MemoryError;
88
use cairo_vm::vm::errors::vm_errors::VirtualMachineError;
99
use cairo_vm::vm::runners::builtin_runner::BuiltinRunner;
10-
use cairo_vm::vm::runners::cairo_runner::{CairoArg, CairoRunner, ExecutionResources};
10+
use cairo_vm::vm::runners::cairo_runner::{CairoArg, CairoRunner};
1111
use cairo_vm::vm::security::verify_secure_runner;
1212
use num_traits::{ToPrimitive, Zero};
1313
use starknet_types_core::felt::Felt;
@@ -442,10 +442,15 @@ pub fn extract_vm_resources(
442442
}
443443

444444
pub fn total_vm_resources(
445-
tracked_vm_resources_without_inner_calls: &ExecutionResources,
445+
tracked_vm_resources_without_inner_calls: &ExtendedExecutionResources,
446446
inner_calls: &[CallInfo],
447-
) -> ExecutionResources {
448-
tracked_vm_resources_without_inner_calls + &CallInfo::summarize_vm_resources(inner_calls.iter())
447+
) -> ExtendedExecutionResources {
448+
tracked_vm_resources_without_inner_calls
449+
// TODO(AvivG): Have CallInfo::summarize_vm_resources return ExtendedExecutionResources.
450+
+ &ExtendedExecutionResources {
451+
vm_resources: CallInfo::summarize_vm_resources(inner_calls.iter()),
452+
opcode_instance_counter: Default::default(),
453+
}
449454
}
450455

451456
pub fn finalize_execution(
@@ -472,8 +477,7 @@ pub fn finalize_execution(
472477
syscall_handler.finalize();
473478

474479
let vm_resources = total_vm_resources(
475-
// TODO(AvivG): have total_vm_resources accept ExtendedExecutionResources.
476-
&tracked_vm_resources_without_inner_calls.vm_resources,
480+
tracked_vm_resources_without_inner_calls,
477481
&syscall_handler.base.inner_calls,
478482
);
479483

@@ -491,7 +495,8 @@ pub fn finalize_execution(
491495
},
492496
inner_calls: syscall_handler_base.inner_calls,
493497
tracked_resource,
494-
resources: vm_resources,
498+
// TODO(AvivG): replace CallInfo::resources type with ExtendedExecutionResources.
499+
resources: vm_resources.vm_resources,
495500
storage_access_tracker: syscall_handler_base.storage_access_tracker,
496501
// TODO(AvivG): retrieve both builtins and opcode counters.
497502
builtin_counters: cairo_primitive_counter_map(

0 commit comments

Comments
 (0)