Skip to content

Commit b01acb9

Browse files
authored
Create ContractsDataStore only once (#3856)
[Refactor only]
1 parent 2643a34 commit b01acb9

File tree

5 files changed

+16
-25
lines changed

5 files changed

+16
-25
lines changed

crates/debugging/src/trace/collect.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use starknet_api::execution_utils::format_panic_data;
1515

1616
pub struct Collector<'a> {
1717
call_trace: &'a CallTrace,
18-
context: &'a Context,
18+
context: &'a Context<'a>,
1919
}
2020

2121
impl<'a> Collector<'a> {

crates/debugging/src/trace/context.rs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,19 @@
11
use crate::Components;
22
use crate::contracts_data_store::ContractsDataStore;
3-
use cheatnet::forking::data::ForkData;
4-
use cheatnet::runtime_extensions::forge_runtime_extension::contracts_data::ContractsData;
53

64
/// Context is a structure that holds the necessary data for creating a [`Trace`](crate::Trace).
7-
pub struct Context {
8-
contracts_data_store: ContractsDataStore,
5+
pub struct Context<'a> {
6+
contracts_data_store: &'a ContractsDataStore,
97
components: Components,
108
}
119

12-
impl Context {
13-
/// Creates a new instance of [`Context`] from a given `cheatnet` [`ContractsData`], [`ForkData`] and [`Components`].
10+
impl<'a> Context<'a> {
11+
/// Creates a new instance of [`Context`] from a given [`ContractsDataStore`] and [`Components`].
1412
#[must_use]
1513
pub fn new(
16-
contracts_data: &ContractsData,
17-
fork_data: &ForkData,
14+
contracts_data_store: &'a ContractsDataStore,
1815
components: Components,
19-
) -> Self {
20-
let contracts_data_store = ContractsDataStore::new(contracts_data, fork_data);
16+
) -> Context<'a> {
2117
Self {
2218
contracts_data_store,
2319
components,
@@ -27,7 +23,7 @@ impl Context {
2723
/// Returns a reference to the [`ContractsDataStore`].
2824
#[must_use]
2925
pub fn contracts_data_store(&self) -> &ContractsDataStore {
30-
&self.contracts_data_store
26+
self.contracts_data_store
3127
}
3228

3329
/// Returns a reference to the [`Components`].

crates/forge-runner/src/debugging/mod.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,20 @@ mod args;
22
mod component;
33
mod trace_verbosity;
44

5-
use cheatnet::forking::data::ForkData;
6-
use cheatnet::runtime_extensions::forge_runtime_extension::contracts_data::ContractsData;
75
use cheatnet::trace_data::CallTrace;
86

97
pub use args::TraceArgs;
8+
use debugging::ContractsDataStore;
109
pub use trace_verbosity::TraceVerbosity;
1110

1211
#[must_use]
1312
pub fn build_debugging_trace(
1413
call_trace: &CallTrace,
15-
contracts_data: &ContractsData,
14+
contracts_data_store: &ContractsDataStore,
1615
trace_args: &TraceArgs,
1716
test_name: String,
18-
fork_data: &ForkData,
1917
) -> Option<debugging::Trace> {
2018
let components = trace_args.to_components()?;
21-
let context = debugging::Context::new(contracts_data, fork_data, components);
19+
let context = debugging::Context::new(contracts_data_store, components);
2220
Some(debugging::Trace::new(call_trace, &context, test_name))
2321
}

crates/forge-runner/src/running.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ use cheatnet::runtime_extensions::forge_runtime_extension::{
3030
};
3131
use cheatnet::state::{BlockInfoReader, CheatnetState, EncounteredErrors, ExtendedStateReader};
3232
use cheatnet::trace_data::CallTrace;
33+
use debugging::ContractsDataStore;
3334
use execution::finalize_execution;
3435
use hints::hints_by_representation;
3536
use rand::prelude::StdRng;
@@ -435,10 +436,9 @@ fn extract_test_case_summary(
435436
test_statistics: (),
436437
debugging_trace: build_debugging_trace(
437438
&run_error.call_trace.borrow(),
438-
contracts_data,
439+
&ContractsDataStore::new(contracts_data, &run_error.fork_data),
439440
trace_args,
440441
case.name.clone(),
441-
&run_error.fork_data,
442442
),
443443
}
444444
}

crates/forge-runner/src/test_case_summary.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -294,20 +294,17 @@ impl TestCaseSummary<Single> {
294294
) -> Self {
295295
let name = test_case.name.clone();
296296

297+
let contracts_data_store = ContractsDataStore::new(contracts_data, &fork_data);
297298
let debugging_trace = build_debugging_trace(
298299
&call_trace.borrow(),
299-
contracts_data,
300+
&contracts_data_store,
300301
trace_args,
301302
name.clone(),
302-
&fork_data,
303303
);
304304

305305
let gas_info = SingleTestGasInfo::new(gas_used);
306306
let gas_info = if gas_report_enabled {
307-
gas_info.get_with_report_data(
308-
&call_trace.borrow(),
309-
&ContractsDataStore::new(contracts_data, &fork_data),
310-
)
307+
gas_info.get_with_report_data(&call_trace.borrow(), &contracts_data_store)
311308
} else {
312309
gas_info
313310
};

0 commit comments

Comments
 (0)