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(mmap: MmapVec) -> Result<Self>
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.
Sourcepub fn text(&self) -> &[u8] ⓘ
pub fn text(&self) -> &[u8] ⓘ
Returns the contents of the text section of the ELF executable this represents.
Sourcepub fn func_name_data(&self) -> &[u8] ⓘ
pub fn func_name_data(&self) -> &[u8] ⓘ
Returns the data in the ELF_NAME_DATA section.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub fn publish(&mut self) -> Result<()>
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
After this function executes all JIT code should be ready to execute.
Sourcepub 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> 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