Don't copy executable code into a CodeMemory (#3265)
* Don't copy executable code into a `CodeMemory` This commit moves a copy from compiled artifacts into a `CodeMemory`. In general this commit drastically changes the meaning of a `CodeMemory`. Previously it was an iteratively-pushed-on structure that would accumulate executable code over time. Afterwards, however, it's a manager for an `MmapVec` which updates the permissions on text section to ensure that the pages are executable. By taking ownership of an `MmapVec` within a `CodeMemory` there's no need to copy any data around, which means that the `.text` section in the ELF image produced by Wasmtime is usable as-is after placement in memory and relocations have been resolved. This moves Wasmtime one step closer to being able to directly use a module after it's `mmap`'d into memory, optimizing when a module is loaded. * Fix windows section alignment * Review comments
This commit is contained in:
@@ -30,10 +30,9 @@ mod unwind;
|
||||
|
||||
pub use crate::code_memory::CodeMemory;
|
||||
pub use crate::instantiate::{
|
||||
finish_compile, subslice_range, CompiledModule, CompiledModuleInfo, ModuleCode, SetupError,
|
||||
finish_compile, subslice_range, CompiledModule, CompiledModuleInfo, SetupError,
|
||||
SymbolizeContext, TypeTables,
|
||||
};
|
||||
pub use crate::link::link_module;
|
||||
pub use crate::mmap_vec::MmapVec;
|
||||
pub use profiling::*;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user