pub trait InnerVm {
// Required methods
fn void(&mut self, page: u64, num_pages: u64) -> Result<(), ApiError>;
fn zero(&mut self, page: u64, num_pages: u64) -> Result<(), ApiError>;
fn poke(&mut self, outer_src: &[u8], inner_dst: u64) -> Result<(), ApiError>;
fn peek_into(
&mut self,
outer_dst: &mut [u8],
inner_src: u64,
) -> Result<(), ApiError>;
fn invoke(
&mut self,
gas: SignedGas,
regs: [u64; 13],
) -> Result<(InvokeOutcome, SignedGas, [u64; 13]), ApiError>;
fn expunge(self) -> Result<u64, ApiError>;
// Provided methods
fn zero_poke(
&mut self,
outer_src: &[u8],
inner_dst: u64,
) -> Result<(), ApiError> { ... }
fn poke_ro_rw_data_page(
&mut self,
data: &[u8],
address_range: &Range<u64>,
address: u64,
) -> Result<(), ApiError> { ... }
fn poke_ro_data_page(
&mut self,
address: u64,
program_data: &ProgramData,
) -> Result<(), ApiError> { ... }
fn poke_rw_data_page(
&mut self,
address: u64,
program_data: &ProgramData,
) -> Result<(), ApiError> { ... }
fn zero_stack_page(
&mut self,
address: u64,
program_data: &ProgramData,
) -> Result<(), ApiError> { ... }
fn zero_heap_page(
&mut self,
address: u64,
program_data: &ProgramData,
) -> Result<(), ApiError> { ... }
}Expand description
A trait that abstracts JAM calls related to an inner VM.