wiggle::wasmtime_crate

Struct CodeMemory

pub struct CodeMemory { /* private fields */ }
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§

§

impl CodeMemory

pub fn new(engine: &Engine, mmap: MmapVec) -> Result<CodeMemory, Error>

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.

pub fn mmap(&self) -> &MmapVec

Returns a reference to the underlying MmapVec this memory owns.

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

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

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

Returns the contents of the ELF_WASMTIME_DWARF section.

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

Returns the data in the ELF_NAME_DATA section.

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.

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

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

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

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

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

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

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

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.

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§

§

impl Drop for CodeMemory

§

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Pointee for T

Source§

type Pointer = u32

Source§

fn debug( pointer: <T as Pointee>::Pointer, f: &mut Formatter<'_>, ) -> Result<(), Error>

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

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more