diff --git a/crates/interpreter/src/instructions/contract/call_helpers.rs b/crates/interpreter/src/instructions/contract/call_helpers.rs index ae8b9ed689..8746f2ec48 100644 --- a/crates/interpreter/src/instructions/contract/call_helpers.rs +++ b/crates/interpreter/src/instructions/contract/call_helpers.rs @@ -1,9 +1,7 @@ -use revm_primitives::U256; - use crate::{ gas, interpreter::Interpreter, - primitives::{Bytes, Spec, SpecId::*}, + primitives::{Bytes, Spec, SpecId::*, U256}, Host, }; use core::{cmp::min, ops::Range}; diff --git a/crates/interpreter/src/instructions/host/call_helpers.rs b/crates/interpreter/src/instructions/host/call_helpers.rs deleted file mode 100644 index 803d0e6235..0000000000 --- a/crates/interpreter/src/instructions/host/call_helpers.rs +++ /dev/null @@ -1,73 +0,0 @@ -use crate::{ - gas::{self}, - interpreter::Interpreter, - primitives::{Address, Bytes, Spec, SpecId::*}, - Host, InstructionResult, -}; -use core::{cmp::min, ops::Range}; - -#[inline] -pub fn get_memory_input_and_out_ranges( - interpreter: &mut Interpreter, -) -> Option<(Bytes, Range)> { - pop_ret!(interpreter, in_offset, in_len, out_offset, out_len, None); - - let in_len = as_usize_or_fail_ret!(interpreter, in_len, None); - let input = if in_len != 0 { - let in_offset = as_usize_or_fail_ret!(interpreter, in_offset, None); - resize_memory!(interpreter, in_offset, in_len, None); - Bytes::copy_from_slice(interpreter.shared_memory.slice(in_offset, in_len)) - } else { - Bytes::new() - }; - - let out_len = as_usize_or_fail_ret!(interpreter, out_len, None); - let out_offset = if out_len != 0 { - let out_offset = as_usize_or_fail_ret!(interpreter, out_offset, None); - resize_memory!(interpreter, out_offset, out_len, None); - out_offset - } else { - usize::MAX //unrealistic value so we are sure it is not used - }; - - Some((input, out_offset..out_offset + out_len)) -} - -#[inline] -pub fn calc_call_gas( - interpreter: &mut Interpreter, - host: &mut H, - to: Address, - has_transfer: bool, - local_gas_limit: u64, - is_call_or_callcode: bool, - is_call_or_staticcall: bool, -) -> Option { - let Some((is_cold, exist)) = host.load_account(to) else { - interpreter.instruction_result = InstructionResult::FatalExternalError; - return None; - }; - let is_new = !exist; - - let call_cost = gas::call_cost( - SPEC::SPEC_ID, - has_transfer, - is_new, - is_cold, - is_call_or_callcode, - is_call_or_staticcall, - ); - - gas!(interpreter, call_cost, None); - - // EIP-150: Gas cost changes for IO-heavy operations - let gas_limit = if SPEC::enabled(TANGERINE) { - let gas = interpreter.gas().remaining(); - // take l64 part of gas_limit - min(gas - gas / 64, local_gas_limit) - } else { - local_gas_limit - }; - - Some(gas_limit) -}