Trait LazyPagesInterface

Source
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§

Source

fn try_to_enable_lazy_pages(prefix: [u8; 32]) -> bool

Try to enable and initialize lazy pages env

Source

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

Source

fn remove_lazy_pages_prot<Context>( ctx: &mut Context, mem: &mut impl Memory<Context>, )

Remove lazy-pages protection, returns wasm memory begin addr

Source

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.

Source

fn get_write_accessed_pages() -> Vec<GearPage>

Returns list of released pages numbers.

Source

fn get_status() -> Status

Returns lazy pages actual status.

Source

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.

Implementations on Foreign Types§

Source§

impl LazyPagesInterface for ()

Source§

fn try_to_enable_lazy_pages(_prefix: [u8; 32]) -> bool

Source§

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, )

Source§

fn remove_lazy_pages_prot<Context>( _ctx: &mut Context, _mem: &mut impl Memory<Context>, )

Source§

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, )

Source§

fn get_write_accessed_pages() -> Vec<GearPage>

Source§

fn get_status() -> Status

Source§

fn pre_process_memory_accesses( _reads: &[MemoryInterval], _writes: &[MemoryInterval], _gas_counter: &mut u64, ) -> Result<(), ProcessAccessError>

Implementors§