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§
Source§impl CodeMemory
impl CodeMemory
Sourcepub fn new(engine: &Engine, mmap: MmapVec) -> Result<Self>
Available on crate feature runtime
only.
pub fn new(engine: &Engine, mmap: MmapVec) -> Result<Self>
runtime
only.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.
Sourcepub fn mmap(&self) -> &MmapVec
Available on crate feature runtime
only.
pub fn mmap(&self) -> &MmapVec
runtime
only.Returns a reference to the underlying MmapVec
this memory owns.
Sourcepub fn text(&self) -> &[u8] ⓘ
Available on crate feature runtime
only.
pub fn text(&self) -> &[u8] ⓘ
runtime
only.Returns the contents of the text section of the ELF executable this represents.
Sourcepub fn wasm_dwarf(&self) -> &[u8] ⓘ
Available on crate feature runtime
only.
pub fn wasm_dwarf(&self) -> &[u8] ⓘ
runtime
only.Returns the contents of the ELF_WASMTIME_DWARF
section.
Sourcepub fn func_name_data(&self) -> &[u8] ⓘ
Available on crate feature runtime
only.
pub fn func_name_data(&self) -> &[u8] ⓘ
runtime
only.Returns the data in the ELF_NAME_DATA
section.
Sourcepub fn wasm_data(&self) -> &[u8] ⓘ
Available on crate feature runtime
only.
pub fn wasm_data(&self) -> &[u8] ⓘ
runtime
only.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.
Sourcepub fn address_map_data(&self) -> &[u8] ⓘ
Available on crate feature runtime
only.
pub fn address_map_data(&self) -> &[u8] ⓘ
runtime
only.Returns the encoded address map section used to pass to
wasmtime_environ::lookup_file_pos
.
Sourcepub fn stack_map_data(&self) -> &[u8] ⓘ
Available on crate feature runtime
only.
pub fn stack_map_data(&self) -> &[u8] ⓘ
runtime
only.Returns the encoded stack map section used to pass to
wasmtime_environ::StackMap::lookup
.
Sourcepub fn exception_tables(&self) -> &[u8] ⓘ
Available on crate feature runtime
only.
pub fn exception_tables(&self) -> &[u8] ⓘ
runtime
only.Returns the encoded exception-tables section to pass to
wasmtime_unwinder::ExceptionTable::parse
.
Sourcepub fn wasmtime_info(&self) -> &[u8] ⓘ
Available on crate feature runtime
only.
pub fn wasmtime_info(&self) -> &[u8] ⓘ
runtime
only.Returns the contents of the ELF_WASMTIME_INFO
section, or an empty
slice if it wasn’t found.
Sourcepub fn trap_data(&self) -> &[u8] ⓘ
Available on crate feature runtime
only.
pub fn trap_data(&self) -> &[u8] ⓘ
runtime
only.Returns the contents of the ELF_WASMTIME_TRAPS
section, or an empty
slice if it wasn’t found.
Sourcepub fn publish(&mut self) -> Result<()>
Available on crate feature runtime
only.
pub fn publish(&mut self) -> Result<()>
runtime
only.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.
Sourcepub fn lookup_trap_code(&self, text_offset: usize) -> Option<Trap>
Available on crate feature runtime
only.
pub fn lookup_trap_code(&self, text_offset: usize) -> Option<Trap>
runtime
only.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§
Auto Trait Implementations§
impl Freeze for CodeMemory
impl !RefUnwindSafe for CodeMemory
impl Send for CodeMemory
impl Sync for CodeMemory
impl Unpin for CodeMemory
impl !UnwindSafe for CodeMemory
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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