Skip to content

Commit 0e81a49

Browse files
authored
Generalize machine run/step in call stack (#226)
1 parent dbf6a10 commit 0e81a49

File tree

5 files changed

+147
-189
lines changed

5 files changed

+147
-189
lines changed

jsontests/src/run.rs

Lines changed: 19 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use evm::backend::in_memory::{
55
};
66
use evm::standard::{Config, Etable, Gasometer, Invoker, TransactArgs};
77
use evm::utils::u256_to_h256;
8-
use evm::{Capture, RuntimeState};
8+
use evm::{Capture, GasedMachine};
99
use primitive_types::U256;
1010
use std::collections::{BTreeMap, BTreeSet};
1111

@@ -59,7 +59,7 @@ pub fn run_test(_filename: &str, _test_name: &str, test: Test, debug: bool) -> R
5959
.collect::<BTreeMap<_, _>>();
6060

6161
let etable = Etable::runtime();
62-
let invoker = Invoker::new(&config);
62+
let invoker = Invoker::<_, Gasometer, _, _, _>::new(&config, &etable);
6363
let args = TransactArgs::Call {
6464
caller: test.transaction.sender,
6565
address: test.transaction.to,
@@ -93,36 +93,27 @@ pub fn run_test(_filename: &str, _test_name: &str, test: Test, debug: bool) -> R
9393
let mut step_backend = run_backend.clone();
9494

9595
// Run
96-
let run_result = evm::transact::<RuntimeState, Gasometer, _, _, _, _>(
97-
args.clone(),
98-
Some(4),
99-
&mut run_backend,
100-
&invoker,
101-
&etable,
102-
);
96+
let run_result = evm::transact(args.clone(), Some(4), &mut run_backend, &invoker);
10397
run_backend.layers[0].clear_pending();
10498

10599
// Step
106100
if debug {
107-
let _step_result = evm::HeapTransact::<RuntimeState, Gasometer, _, _, _>::new(
108-
args,
109-
&invoker,
110-
&mut step_backend,
111-
)
112-
.and_then(|mut stepper| loop {
113-
{
114-
let machine = stepper.last_machine()?;
115-
println!(
116-
"pc: {}, opcode: {:?}, gas: 0x{:x}",
117-
machine.machine.position(),
118-
machine.machine.peek_opcode(),
119-
machine.gasometer.gas(),
120-
);
121-
}
122-
if let Err(Capture::Exit(result)) = stepper.step(&etable) {
123-
break result;
124-
}
125-
});
101+
let _step_result = evm::HeapTransact::new(args, &invoker, &mut step_backend).and_then(
102+
|mut stepper| loop {
103+
{
104+
let machine: &GasedMachine<_, Gasometer> = stepper.last_machine()?;
105+
println!(
106+
"pc: {}, opcode: {:?}, gas: 0x{:x}",
107+
machine.machine.position(),
108+
machine.machine.peek_opcode(),
109+
machine.gasometer.gas(),
110+
);
111+
}
112+
if let Err(Capture::Exit(result)) = stepper.step() {
113+
break result;
114+
}
115+
},
116+
);
126117
step_backend.layers[0].clear_pending();
127118
}
128119

0 commit comments

Comments
 (0)