pub trait LazyPagesInterface {
// Required methods
fn try_to_enable_lazy_pages(prefix: [u8; 32]) -> bool;
fn init_for_program<Context>(
ctx: &mut Context,
mem: &mut impl Memory<Context>,
program_id: ProgramId,
memory_infix: MemoryInfix,
stack_end: Option<WasmPage>,
globals_config: GlobalsAccessConfig,
costs: LazyPagesCosts,
);
fn remove_lazy_pages_prot<Context>(
ctx: &mut Context,
mem: &mut impl Memory<Context>,
);
fn update_lazy_pages_and_protect_again<Context>(
ctx: &mut Context,
mem: &mut impl Memory<Context>,
old_mem_addr: Option<HostPointer>,
old_mem_size: WasmPagesAmount,
new_mem_addr: HostPointer,
);
fn get_write_accessed_pages() -> Vec<GearPage>;
fn get_status() -> Status;
fn pre_process_memory_accesses(
reads: &[MemoryInterval],
writes: &[MemoryInterval],
gas_counter: &mut u64,
) -> Result<(), ProcessAccessError>;
}
Required Methods§
Sourcefn try_to_enable_lazy_pages(prefix: [u8; 32]) -> bool
fn try_to_enable_lazy_pages(prefix: [u8; 32]) -> bool
Try to enable and initialize lazy pages env
Sourcefn init_for_program<Context>(
ctx: &mut Context,
mem: &mut impl Memory<Context>,
program_id: ProgramId,
memory_infix: MemoryInfix,
stack_end: Option<WasmPage>,
globals_config: GlobalsAccessConfig,
costs: LazyPagesCosts,
)
fn init_for_program<Context>( ctx: &mut Context, mem: &mut impl Memory<Context>, program_id: ProgramId, memory_infix: MemoryInfix, stack_end: Option<WasmPage>, globals_config: GlobalsAccessConfig, costs: LazyPagesCosts, )
Protect and save storage keys for pages which has no data
Sourcefn remove_lazy_pages_prot<Context>(
ctx: &mut Context,
mem: &mut impl Memory<Context>,
)
fn remove_lazy_pages_prot<Context>( ctx: &mut Context, mem: &mut impl Memory<Context>, )
Remove lazy-pages protection, returns wasm memory begin addr
Sourcefn update_lazy_pages_and_protect_again<Context>(
ctx: &mut Context,
mem: &mut impl Memory<Context>,
old_mem_addr: Option<HostPointer>,
old_mem_size: WasmPagesAmount,
new_mem_addr: HostPointer,
)
fn update_lazy_pages_and_protect_again<Context>( ctx: &mut Context, mem: &mut impl Memory<Context>, old_mem_addr: Option<HostPointer>, old_mem_size: WasmPagesAmount, new_mem_addr: HostPointer, )
Protect lazy-pages and set new wasm mem addr and size, if they have been changed.
Sourcefn get_write_accessed_pages() -> Vec<GearPage>
fn get_write_accessed_pages() -> Vec<GearPage>
Returns list of released pages numbers.
Sourcefn get_status() -> Status
fn get_status() -> Status
Returns lazy pages actual status.
Sourcefn pre_process_memory_accesses(
reads: &[MemoryInterval],
writes: &[MemoryInterval],
gas_counter: &mut u64,
) -> Result<(), ProcessAccessError>
fn pre_process_memory_accesses( reads: &[MemoryInterval], writes: &[MemoryInterval], gas_counter: &mut u64, ) -> Result<(), ProcessAccessError>
Pre-process memory access in syscalls in lazy-pages.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.