wasmtime

Struct CodeMemory

Source
pub struct CodeMemory { /* private fields */ }
Available on crate feature runtime only.
Expand description

Management of executable memory within a MmapVec

This type consumes ownership of a region of memory and will manage the executable permissions of the contained JIT code as necessary.

Implementations§

Source§

impl CodeMemory

Source

pub fn new(mmap: MmapVec) -> Result<Self>

Creates a new CodeMemory by taking ownership of the provided MmapVec.

The returned CodeMemory manages the internal MmapVec and the publish method is used to actually make the memory executable.

Source

pub fn mmap(&self) -> &MmapVec

Returns a reference to the underlying MmapVec this memory owns.

Source

pub fn text(&self) -> &[u8]

Returns the contents of the text section of the ELF executable this represents.

Source

pub fn wasm_dwarf(&self) -> &[u8]

Returns the contents of the ELF_WASMTIME_DWARF section.

Source

pub fn func_name_data(&self) -> &[u8]

Returns the data in the ELF_NAME_DATA section.

Source

pub fn wasm_data(&self) -> &[u8]

Returns the concatenated list of all data associated with this wasm module.

This is used for initialization of memories and all data ranges stored in a Module are relative to the slice returned here.

Source

pub fn address_map_data(&self) -> &[u8]

Returns the encoded address map section used to pass to wasmtime_environ::lookup_file_pos.

Source

pub fn wasmtime_info(&self) -> &[u8]

Returns the contents of the ELF_WASMTIME_INFO section, or an empty slice if it wasn’t found.

Source

pub fn trap_data(&self) -> &[u8]

Returns the contents of the ELF_WASMTIME_TRAPS section, or an empty slice if it wasn’t found.

Source

pub fn publish(&mut self) -> Result<()>

Publishes the internal ELF image to be ready for execution.

This method can only be called once and will panic if called twice. This will parse the ELF image from the original MmapVec and do everything necessary to get it ready for execution, including:

  • Change page protections from read/write to read/execute.
  • Register unwinding information with the OS
  • Register this image with the debugger if native DWARF is present

After this function executes all JIT code should be ready to execute.

Source

pub fn lookup_trap_code(&self, text_offset: usize) -> Option<Trap>

Looks up the given offset within this module’s text section and returns the trap code associated with that instruction, if there is one.

Trait Implementations§

Source§

impl Drop for CodeMemory

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.