CallInstruction
Performs call instruction for the interpreter. CALL -> 0xF1
Signature
pub fn callInstruction(self: *Interpreter) (error{FailedToLoadAccount} || Interpreter.InstructionErrors)!void
CallCodeInstruction
Performs callcode instruction for the interpreter. CALLCODE -> 0xF2
Signature
pub fn callCodeInstruction(self: *Interpreter) Interpreter.InstructionErrors!void
CreateInstruction
Performs create instruction for the interpreter. CREATE -> 0xF0 and CREATE2 -> 0xF5
Signature
pub fn createInstruction(self: *Interpreter, is_create_2: bool) (error{ InstructionNotEnabled, Overflow } || Memory.Error || Interpreter.InstructionErrors)!void
DelegateCallInstruction
Performs delegatecall instruction for the interpreter. DELEGATECALL -> 0xF4
Signature
pub fn delegateCallInstruction(self: *Interpreter) (error{InstructionNotEnabled} || Interpreter.InstructionErrors)!void
StaticCallInstruction
Performs staticcall instruction for the interpreter. STATICCALL -> 0xFA
Signature
pub fn staticCallInstruction(self: *Interpreter) (error{InstructionNotEnabled} || Interpreter.InstructionErrors)!void
CalculateCall
Calculates the gas cost for a CALL
opcode.
Habides by EIP-150 where gas gets calculated as the min of available - (available / 64) or local_gas_limit
Signature
pub inline fn calculateCall(self: *Interpreter, values_transfered: bool, is_cold: bool, new_account: bool, local_gas_limit: u64) ?u64
GetMemoryInputsAndRanges
Gets the memory slice and the ranges used to grab it. This also resizes the interpreter's memory.
Signature
pub fn getMemoryInputsAndRanges(self: *Interpreter) (Interpreter.InstructionErrors || Memory.Error || error{Overflow})!struct { []u8, struct { usize, usize } }
ResizeMemoryAndGetRange
Resizes the memory as gets the offset ranges.
Signature
pub fn resizeMemoryAndGetRange(
self: *Interpreter,
offset: u256,
len: u256,
) (Interpreter.InstructionErrors || Memory.Error || error{Overflow})!struct { usize, usize }