Skip to content

Commit 52c8f92

Browse files
authored
chore(interpreter): unbox contract field (bluealloy#1228)
1 parent 89792c2 commit 52c8f92

File tree

4 files changed

+8
-7
lines changed

4 files changed

+8
-7
lines changed

crates/interpreter/src/interpreter.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@ use revm_primitives::U256;
1717
use std::borrow::ToOwned;
1818
use std::boxed::Box;
1919

20+
/// EVM bytecode interpreter.
2021
#[derive(Debug)]
2122
pub struct Interpreter {
2223
/// Contract information and invoking data
23-
pub contract: Box<Contract>,
24+
pub contract: Contract,
2425
/// The current instruction pointer.
2526
pub instruction_pointer: *const u8,
2627
/// The execution control flag. If this is not set to `Continue`, the interpreter will stop
@@ -114,7 +115,7 @@ impl InterpreterAction {
114115

115116
impl Interpreter {
116117
/// Create new interpreter
117-
pub fn new(contract: Box<Contract>, gas_limit: u64, is_static: bool) -> Self {
118+
pub fn new(contract: Contract, gas_limit: u64, is_static: bool) -> Self {
118119
Self {
119120
instruction_pointer: contract.bytecode.as_ptr(),
120121
contract,

crates/revm/benches/bench.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ fn bench_eval(g: &mut BenchmarkGroup<'_, WallTime>, evm: &mut Evm<'static, (), B
114114
// replace memory with empty memory to use it inside interpreter.
115115
// Later return memory back.
116116
let temp = core::mem::replace(&mut shared_memory, EMPTY_SHARED_MEMORY);
117-
let mut interpreter = Interpreter::new(Box::new(contract.clone()), u64::MAX, false);
117+
let mut interpreter = Interpreter::new(contract.clone(), u64::MAX, false);
118118
let res = interpreter.run(temp, &instruction_table, &mut host);
119119
shared_memory = interpreter.take_memory();
120120
host.clear();

crates/revm/src/context/evm_context.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -198,12 +198,12 @@ impl<DB: Database> EvmContext<DB> {
198198
inputs.return_memory_offset.clone(),
199199
))
200200
} else if !bytecode.is_empty() {
201-
let contract = Box::new(Contract::new_with_context(
201+
let contract = Contract::new_with_context(
202202
inputs.input.clone(),
203203
bytecode,
204204
code_hash,
205205
&inputs.context,
206-
));
206+
);
207207
// Create interpreter and executes call and push new CallStackFrame.
208208
Ok(FrameOrResult::new_call_frame(
209209
inputs.return_memory_offset.clone(),

crates/revm/src/context/inner_evm_context.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -289,14 +289,14 @@ impl<DB: Database> InnerEvmContext<DB> {
289289

290290
let bytecode = Bytecode::new_raw(inputs.init_code.clone());
291291

292-
let contract = Box::new(Contract::new(
292+
let contract = Contract::new(
293293
Bytes::new(),
294294
bytecode,
295295
init_code_hash,
296296
created_address,
297297
inputs.caller,
298298
inputs.value,
299-
));
299+
);
300300

301301
Ok(FrameOrResult::new_create_frame(
302302
created_address,

0 commit comments

Comments
 (0)