pub trait InspectorEvmTr: EvmTr<Frame = EthFrame<EthInterpreter>, Instructions: InstructionProvider<InterpreterTypes = EthInterpreter, Context = Self::Context>, Context: ContextTr<Journal: JournalExt>> {
type Inspector: Inspector<Self::Context, EthInterpreter>;
// Required methods
fn inspector(&mut self) -> &mut Self::Inspector;
fn ctx_inspector(&mut self) -> (&mut Self::Context, &mut Self::Inspector);
fn ctx_inspector_frame(
&mut self,
) -> (&mut Self::Context, &mut Self::Inspector, &mut Self::Frame);
fn ctx_inspector_frame_instructions(
&mut self,
) -> (&mut Self::Context, &mut Self::Inspector, &mut Self::Frame, &mut Self::Instructions);
// Provided methods
fn inspect_frame_init(
&mut self,
frame_init: <Self::Frame as FrameTr>::FrameInit,
) -> Result<FrameInitResult<'_, Self::Frame>, ContextDbError<Self::Context>> { ... }
fn inspect_frame_run(
&mut self,
) -> Result<FrameInitOrResult<Self::Frame>, ContextDbError<Self::Context>> { ... }
}
Expand description
Inspector EVM trait. Extends the [EvmTr
] trait with inspector related methods.
It contains execution of interpreter with crate::Inspector
calls crate::Inspector::step
and crate::Inspector::step_end
calls.
It is used inside crate::InspectorHandler
to extend evm with support for inspection.
Required Associated Types§
Sourcetype Inspector: Inspector<Self::Context, EthInterpreter>
type Inspector: Inspector<Self::Context, EthInterpreter>
The inspector type used for EVM execution inspection.
Required Methods§
Sourcefn ctx_inspector(&mut self) -> (&mut Self::Context, &mut Self::Inspector)
fn ctx_inspector(&mut self) -> (&mut Self::Context, &mut Self::Inspector)
Returns a tuple of mutable references to the context and the inspector.
Useful when you want to allow inspector to modify the context.
Sourcefn ctx_inspector_frame(
&mut self,
) -> (&mut Self::Context, &mut Self::Inspector, &mut Self::Frame)
fn ctx_inspector_frame( &mut self, ) -> (&mut Self::Context, &mut Self::Inspector, &mut Self::Frame)
Returns a tuple of mutable references to the context, the inspector and the frame.
Useful when you want to allow inspector to modify the context and the frame.
Sourcefn ctx_inspector_frame_instructions(
&mut self,
) -> (&mut Self::Context, &mut Self::Inspector, &mut Self::Frame, &mut Self::Instructions)
fn ctx_inspector_frame_instructions( &mut self, ) -> (&mut Self::Context, &mut Self::Inspector, &mut Self::Frame, &mut Self::Instructions)
Returns a tuple of mutable references to the context, the inspector, the frame and the instructions.
Provided Methods§
Sourcefn inspect_frame_init(
&mut self,
frame_init: <Self::Frame as FrameTr>::FrameInit,
) -> Result<FrameInitResult<'_, Self::Frame>, ContextDbError<Self::Context>>
fn inspect_frame_init( &mut self, frame_init: <Self::Frame as FrameTr>::FrameInit, ) -> Result<FrameInitResult<'_, Self::Frame>, ContextDbError<Self::Context>>
Initializes the frame for the given frame input. Frame is pushed to the frame stack.
Sourcefn inspect_frame_run(
&mut self,
) -> Result<FrameInitOrResult<Self::Frame>, ContextDbError<Self::Context>>
fn inspect_frame_run( &mut self, ) -> Result<FrameInitOrResult<Self::Frame>, ContextDbError<Self::Context>>
Run the frame from the top of the stack. Returns the frame init or result.
If frame has returned result it would mark it as finished.