24 enqueued_call_context->get_is_static(),
25 enqueued_call_context->get_gas_limit());
41 context.get_bytecode_manager().get_bytecode_id();
65 vinfo(
"Bytecode retrieval error:: ", e.what());
68 vinfo(
"Instruction fetching error: ", e.what());
71 vinfo(
"Addressing exception: ", e.what());
74 vinfo(
"Register validation exception: ", e.what());
77 vinfo(
"Out of gas exception: ", e.what());
80 vinfo(
"Opcode execution exception: ", e.what());
82 }
catch (
const std::exception& e) {
85 info(
"An unhandled exception occurred: ", e.what());
#define BB_BENCH_NAME(name)
virtual std::unique_ptr< GasTrackerInterface > make_gas_tracker(GasEvent &gas_event, const Instruction &instruction, ContextInterface &context)=0
virtual std::unique_ptr< AddressingInterface > make_addressing(AddressingEvent &event)=0
std::unique_ptr< GasTrackerInterface > gas_tracker
void dispatch_opcode(ExecutionOpCode opcode, ContextInterface &context, const std::vector< Operand > &resolved_operands)
Dispatch an opcode. This is the main function that dispatches the opcode to the appropriate handler.
ExecutionComponentsProviderInterface & execution_components
CallStackMetadataCollectorInterface & call_stack_metadata_collector
const ExecutionResult & get_execution_result() const
void handle_exceptional_halt(ContextInterface &context, const std::string &halting_message)
Handle the exceptional halt of a context. This is called when an exception is thrown during the execu...
std::stack< std::unique_ptr< ContextInterface > > external_call_stack
void handle_exit_call()
Handle the exiting of a call. This is called when a call returns or reverts.
ExecutionIdManagerInterface & execution_id_manager
virtual void increment_execution_id()=0
EnqueuedCallResult execute(std::unique_ptr< ContextInterface > enqueued_call_context) override
Execute a top-level enqueued call.
CalldataProvider make_calldata_provider(const ContextInterface &context)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept