Class evm_t::system_operations#

Nested Relationships#

This class is a nested type of Template Class evm_t.

Class Documentation#

class system_operations#

The system operations class. It contains the implementation of the system operations. 00:

  • STOP f0s: System operations:

  • CREATE

  • CALL

  • CALLCODE

  • RETURN

  • DELEGATECALL

  • CREATE2

  • STATICCALL

  • REVERT

  • INVALID

  • SELFDESTRUCT

Public Static Functions

static inline __host__ __device__ __forceinline__ int32_t valid_CALL (arith_t &arith, message_t &message, touch_state_t &touch_state)

Get if a message call is valid.

Parameters
  • arith[in] The arithmetical environment.

  • message[in] The message call.

  • touch_state[in] The touch state.

Returns

1 if the message call is valid, 0 otherwise.

static inline __host__ __device__ __forceinline__ int32_t valid_CREATE (arith_t &arith, message_t &message, touch_state_t &touch_state)

Get if a message create call is valid.

Parameters
  • arith[in] The arithmetical environment.

  • message[in] The message call.

  • touch_state[in] The touch state.

Returns

1 if the message create call is valid, 0 otherwise.

static inline __host__ __device__ __forceinline__ void generic_CALL (arith_t &arith, bn_t &gas_limit, bn_t &gas_used, uint32_t &error_code, stack_t &stack, message_t &message, memory_t &memory, touch_state_t &touch_state, evm_t &evm, message_t &new_message, bn_t &args_offset, bn_t &args_size, return_data_t &return_data)

Make a generic call.

Parameters
  • arith[in] The arithmetical environment.

  • gas_limit[in] The gas limit.

  • gas_used[inout] The gas used.

  • error_code[out] The error code.

  • stack[inout] The stack.

  • message[in] The current context message call.

  • memory[in] The memory.

  • touch_state[in] The touch state.

  • evm[out] The evm.

  • new_message[in] The new message call.

  • args_offset[in] The message offset for call data.

  • args_size[in] The message size for call data.

  • return_data[out] The return data.

static inline __host__ __device__ __forceinline__ void generic_CREATE (arith_t &arith, bn_t &gas_limit, bn_t &gas_used, uint32_t &error_code, stack_t &stack, message_t &message, memory_t &memory, touch_state_t &touch_state, evm_t &evm, message_t &new_message, bn_t &args_offset, bn_t &args_size, return_data_t &return_data)

Make a generic create call.

Parameters
  • arith[in] The arithmetical environment.

  • gas_limit[in] The gas limit.

  • gas_used[inout] The gas used.

  • error_code[out] The error code.

  • stack[inout] The stack.

  • message[in] The current context message call.

  • memory[in] The memory.

  • touch_state[in] The touch state.

  • evm[out] The evm.

  • new_message[in] The new message call.

  • args_offset[in] The message offset for init code.

  • args_size[in] The message size for init code.

  • return_data[out] The return data.

static inline __host__ __device__ __forceinline__ void operation_STOP (return_data_t &return_data, uint32_t &error_code)

The STOP operation.

Parameters
  • return_data[out] The return data.

  • error_code[out] The error code.

static inline __host__ __device__ __forceinline__ void operation_CREATE (arith_t &arith, bn_t &gas_limit, bn_t &gas_used, uint32_t &error_code, uint32_t &pc, stack_t &stack, message_t &message, memory_t &memory, touch_state_t &touch_state, uint8_t &opcode, keccak_t &keccak, evm_t &evm, return_data_t &return_data)

The CREATE operation.

Parameters
  • arith[in] The arithmetical environment.

  • gas_limit[in] The gas limit.

  • gas_used[inout] The gas used.

  • error_code[out] The error code.

  • pc[inout] The program counter.

  • stack[inout] The stack.

  • message[in] The current context message call.

  • memory[in] The memory.

  • touch_state[in] The touch state.

  • opcode[in] The operation opcode

  • keccak[in] The keccak object.

  • evm[out] The evm.

  • return_data[out] The return data.

static inline __host__ __device__ __forceinline__ void operation_CALL (arith_t &arith, bn_t &gas_limit, bn_t &gas_used, uint32_t &error_code, uint32_t &pc, stack_t &stack, message_t &message, memory_t &memory, touch_state_t &touch_state, uint8_t &opcode, evm_t &evm, return_data_t &return_data)

The CALL operation.

Parameters
  • arith[in] The arithmetical environment.

  • gas_limit[in] The gas limit.

  • gas_used[inout] The gas used.

  • error_code[out] The error code.

  • pc[inout] The program counter.

  • stack[inout] The stack.

  • message[in] The current context message call.

  • memory[in] The memory.

  • touch_state[inout] The touch state.

  • opcode[in] The operation opcode

  • evm[out] The evm.

  • return_data[out] The return data.

static inline __host__ __device__ __forceinline__ void operation_CALLCODE (arith_t &arith, bn_t &gas_limit, bn_t &gas_used, uint32_t &error_code, uint32_t &pc, stack_t &stack, message_t &message, memory_t &memory, touch_state_t &touch_state, uint8_t &opcode, evm_t &evm, return_data_t &return_data)

The CALLCODE operation.

Parameters
  • arith[in] The arithmetical environment.

  • gas_limit[in] The gas limit.

  • gas_used[inout] The gas used.

  • error_code[out] The error code.

  • pc[inout] The program counter.

  • stack[inout] The stack.

  • message[in] The current context message call.

  • memory[in] The memory.

  • touch_state[inout] The touch state.

  • opcode[in] The operation opcode

  • evm[out] The evm.

  • return_data[out] The return data.

static inline __host__ __device__ __forceinline__ void operation_RETURN (arith_t &arith, bn_t &gas_limit, bn_t &gas_used, uint32_t &error_code, stack_t &stack, memory_t &memory, return_data_t &return_data)

The RETURN operation.

Parameters
  • arith[in] The arithmetical environment.

  • gas_limit[in] The gas limit.

  • gas_used[inout] The gas used.

  • error_code[out] The error code.

  • stack[in] The stack.

  • memory[in] The memory.

  • return_data[out] The return data.

static inline __host__ __device__ __forceinline__ void operation_DELEGATECALL (arith_t &arith, bn_t &gas_limit, bn_t &gas_used, uint32_t &error_code, uint32_t &pc, stack_t &stack, message_t &message, memory_t &memory, touch_state_t &touch_state, uint8_t &opcode, evm_t &evm, return_data_t &return_data)

The DELEGATECALL operation.

Parameters
  • arith[in] The arithmetical environment.

  • gas_limit[in] The gas limit.

  • gas_used[inout] The gas used.

  • error_code[out] The error code.

  • pc[inout] The program counter.

  • stack[inout] The stack.

  • message[in] The current context message call.

  • memory[in] The memory.

  • touch_state[inout] The touch state.

  • opcode[in] The operation opcode

  • evm[out] The evm.

  • return_data[out] The return data.

static inline __host__ __device__ __forceinline__ void operation_CREATE2 (arith_t &arith, bn_t &gas_limit, bn_t &gas_used, uint32_t &error_code, uint32_t &pc, stack_t &stack, message_t &message, memory_t &memory, touch_state_t &touch_state, uint8_t &opcode, keccak_t &keccak, evm_t &evm, return_data_t &return_data)

The CREATE2 operation.

Parameters
  • arith[in] The arithmetical environment.

  • gas_limit[in] The gas limit.

  • gas_used[inout] The gas used.

  • error_code[out] The error code.

  • pc[inout] The program counter.

  • stack[inout] The stack.

  • message[in] The current context message call.

  • memory[in] The memory.

  • touch_state[inout] The touch state.

  • opcode[in] The operation opcode

  • keccak[in] The keccak object.

  • evm[out] The evm.

  • return_data[out] The return data.

static inline __host__ __device__ __forceinline__ void operation_STATICCALL (arith_t &arith, bn_t &gas_limit, bn_t &gas_used, uint32_t &error_code, uint32_t &pc, stack_t &stack, message_t &message, memory_t &memory, touch_state_t &touch_state, uint8_t &opcode, evm_t &evm, return_data_t &return_data)

The STATICCALL operation.

Parameters
  • arith[in] The arithmetical environment.

  • gas_limit[in] The gas limit.

  • gas_used[inout] The gas used.

  • error_code[out] The error code.

  • pc[inout] The program counter.

  • stack[inout] The stack.

  • message[in] The current context message call.

  • memory[in] The memory.

  • touch_state[inout] The touch state.

  • opcode[in] The operation opcode

  • evm[out] The evm.

  • return_data[out] The return data.

static inline __host__ __device__ __forceinline__ void operation_REVERT (arith_t &arith, bn_t &gas_limit, bn_t &gas_used, uint32_t &error_code, stack_t &stack, memory_t &memory, return_data_t &return_data)

The REVERT operation.

Parameters
  • arith[in] The arithmetical environment.

  • gas_limit[in] The gas limit.

  • gas_used[inout] The gas used.

  • error_code[out] The error code.

  • stack[in] The stack.

  • memory[in] The memory.

  • return_data[out] The return data.

static inline __host__ __device__ __forceinline__ void operation_INVALID (uint32_t &error_code)

The INVALID operation.

Parameters

error_code[out] The error code.

static inline __host__ __device__ __forceinline__ void operation_SELFDESTRUCT (arith_t &arith, bn_t &gas_limit, bn_t &gas_used, uint32_t &error_code, uint32_t &pc, stack_t &stack, message_t &message, touch_state_t &touch_state, return_data_t &return_data, evm_t &evm)

The SELFDESTRUCT operation.

Parameters
  • arith[in] The arithmetical environment.

  • gas_limit[in] The gas limit.

  • gas_used[inout] The gas used.

  • error_code[out] The error code.

  • pc[inout] The program counter.

  • stack[inout] The stack.

  • message[in] The current context message call.

  • touch_state[inout] The touch state.

  • return_data[out] The return data.

  • evm[out] The evm.