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
impl CodeMemory
pub fn new(engine: &Engine, mmap: MmapVec) -> Result<CodeMemory, Error>
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
pub fn mmap(&self) -> &MmapVec
Returns a reference to the underlying MmapVec
this memory owns.
pub fn text(&self) -> &[u8] ⓘ
pub fn text(&self) -> &[u8] ⓘ
Returns the contents of the text section of the ELF executable this represents.
pub fn wasm_dwarf(&self) -> &[u8] ⓘ
pub fn wasm_dwarf(&self) -> &[u8] ⓘ
Returns the contents of the ELF_WASMTIME_DWARF
section.
pub fn func_name_data(&self) -> &[u8] ⓘ
pub fn func_name_data(&self) -> &[u8] ⓘ
Returns the data in the ELF_NAME_DATA
section.
pub fn wasm_data(&self) -> &[u8] ⓘ
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] ⓘ
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] ⓘ
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] ⓘ
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>
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>
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§
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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