Renamed Module to ModuleInfo

This commit is contained in:
Syrus
2020-05-19 18:47:50 -07:00
parent f3980d0e57
commit 09e057338a
36 changed files with 130 additions and 127 deletions

View File

@@ -10,7 +10,7 @@ use wasmer_compiler::CompileError;
#[cfg(feature = "wat")] #[cfg(feature = "wat")]
use wasmer_compiler::WasmError; use wasmer_compiler::WasmError;
use wasmer_engine::{CompiledModule, DeserializeError, Resolver, SerializeError}; use wasmer_engine::{CompiledModule, DeserializeError, Resolver, SerializeError};
use wasmer_runtime::{ExportsIterator, ImportsIterator, InstanceHandle, Module as ModuleInfo}; use wasmer_runtime::{ExportsIterator, ImportsIterator, InstanceHandle, ModuleInfo};
#[derive(Error, Debug)] #[derive(Error, Debug)]
pub enum IoCompileError { pub enum IoCompileError {

View File

@@ -25,7 +25,7 @@ use wasmer_compiler::{
FunctionBodyData, FunctionBodyData,
}; };
use wasmer_compiler::{CompilerConfig, ModuleTranslationState, Target}; use wasmer_compiler::{CompilerConfig, ModuleTranslationState, Target};
use wasmer_runtime::{MemoryPlan, Module, TablePlan}; use wasmer_runtime::{MemoryPlan, ModuleInfo, TablePlan};
/// A compiler that compiles a WebAssembly module with Cranelift, translating the Wasm to Cranelift IR, /// A compiler that compiles a WebAssembly module with Cranelift, translating the Wasm to Cranelift IR,
/// optimizing it and then translating to assembly. /// optimizing it and then translating to assembly.
@@ -70,7 +70,7 @@ impl Compiler for CraneliftCompiler {
/// associated relocations. /// associated relocations.
fn compile_module( fn compile_module(
&self, &self,
module: &Module, module: &ModuleInfo,
module_translation: &ModuleTranslationState, module_translation: &ModuleTranslationState,
function_body_inputs: PrimaryMap<LocalFunctionIndex, FunctionBodyData<'_>>, function_body_inputs: PrimaryMap<LocalFunctionIndex, FunctionBodyData<'_>>,
memory_plans: PrimaryMap<MemoryIndex, MemoryPlan>, memory_plans: PrimaryMap<MemoryIndex, MemoryPlan>,
@@ -172,7 +172,7 @@ impl Compiler for CraneliftCompiler {
fn compile_dynamic_function_trampolines( fn compile_dynamic_function_trampolines(
&self, &self,
module: &Module, module: &ModuleInfo,
) -> Result<PrimaryMap<FunctionIndex, FunctionBody>, CompileError> { ) -> Result<PrimaryMap<FunctionIndex, FunctionBody>, CompileError> {
use wasmer_runtime::VMOffsets; use wasmer_runtime::VMOffsets;
let isa = self.isa(); let isa = self.isa();

View File

@@ -13,7 +13,7 @@ pub type StackSlots = PrimaryMap<LocalFunctionIndex, ir::StackSlots>;
/// Memory definition offset in the VMContext structure. /// Memory definition offset in the VMContext structure.
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub enum ModuleMemoryOffset { pub enum ModuleInfoMemoryOffset {
/// Not available. /// Not available.
None, None,
/// Offset to the defined memory. /// Offset to the defined memory.
@@ -22,11 +22,11 @@ pub enum ModuleMemoryOffset {
Imported(u32), Imported(u32),
} }
/// Module `vmctx` related info. /// ModuleInfo `vmctx` related info.
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct ModuleVmctxInfo { pub struct ModuleInfoVmctxInfo {
/// The memory definition offset in the VMContext structure. /// The memory definition offset in the VMContext structure.
pub memory_offset: ModuleMemoryOffset, pub memory_offset: ModuleInfoMemoryOffset,
/// The functions stack slots. /// The functions stack slots.
pub stack_slots: StackSlots, pub stack_slots: StackSlots,

View File

@@ -1,5 +1,5 @@
mod address_map; mod address_map;
mod frame_layout; mod frame_layout;
pub use self::address_map::{ModuleMemoryOffset, ModuleVmctxInfo, ValueLabelsRanges}; pub use self::address_map::{ModuleInfoMemoryOffset, ModuleInfoVmctxInfo, ValueLabelsRanges};
pub use self::frame_layout::{FrameLayout, FrameLayoutChange, FrameLayouts}; pub use self::frame_layout::{FrameLayout, FrameLayoutChange, FrameLayouts};

View File

@@ -15,7 +15,7 @@ use wasm_common::{FunctionIndex, GlobalIndex, MemoryIndex, SignatureIndex, Table
use wasmer_compiler::{WasmError, WasmResult}; use wasmer_compiler::{WasmError, WasmResult};
use wasmer_runtime::VMBuiltinFunctionIndex; use wasmer_runtime::VMBuiltinFunctionIndex;
use wasmer_runtime::VMOffsets; use wasmer_runtime::VMOffsets;
use wasmer_runtime::{MemoryPlan, MemoryStyle, Module, TablePlan, TableStyle}; use wasmer_runtime::{MemoryPlan, MemoryStyle, ModuleInfo, TablePlan, TableStyle};
/// Compute an `ir::ExternalName` for a given wasm function index. /// Compute an `ir::ExternalName` for a given wasm function index.
pub fn get_func_name(func_index: FunctionIndex) -> ir::ExternalName { pub fn get_func_name(func_index: FunctionIndex) -> ir::ExternalName {
@@ -32,13 +32,13 @@ pub fn type_of_vmtable_definition_current_elements(vmoffsets: &VMOffsets) -> ir:
ir::Type::int(u16::from(vmoffsets.size_of_vmtable_definition_current_elements()) * 8).unwrap() ir::Type::int(u16::from(vmoffsets.size_of_vmtable_definition_current_elements()) * 8).unwrap()
} }
/// The `FuncEnvironment` implementation for use by the `ModuleEnvironment`. /// The `FuncEnvironment` implementation for use by the `ModuleInfoEnvironment`.
pub struct FuncEnvironment<'module_environment> { pub struct FuncEnvironment<'module_environment> {
/// Target-specified configuration. /// Target-specified configuration.
target_config: TargetFrontendConfig, target_config: TargetFrontendConfig,
/// The module-level environment which this function-level environment belongs to. /// The module-level environment which this function-level environment belongs to.
module: &'module_environment Module, module: &'module_environment ModuleInfo,
/// The module function signatures /// The module function signatures
signatures: &'module_environment PrimaryMap<SignatureIndex, ir::Signature>, signatures: &'module_environment PrimaryMap<SignatureIndex, ir::Signature>,
@@ -91,7 +91,7 @@ pub struct FuncEnvironment<'module_environment> {
impl<'module_environment> FuncEnvironment<'module_environment> { impl<'module_environment> FuncEnvironment<'module_environment> {
pub fn new( pub fn new(
target_config: TargetFrontendConfig, target_config: TargetFrontendConfig,
module: &'module_environment Module, module: &'module_environment ModuleInfo,
signatures: &'module_environment PrimaryMap<SignatureIndex, ir::Signature>, signatures: &'module_environment PrimaryMap<SignatureIndex, ir::Signature>,
memory_plans: &'module_environment PrimaryMap<MemoryIndex, MemoryPlan>, memory_plans: &'module_environment PrimaryMap<MemoryIndex, MemoryPlan>,
table_plans: &'module_environment PrimaryMap<TableIndex, TablePlan>, table_plans: &'module_environment PrimaryMap<TableIndex, TablePlan>,

View File

@@ -57,7 +57,7 @@ mod translator;
pub use crate::compiler::CraneliftCompiler; pub use crate::compiler::CraneliftCompiler;
pub use crate::config::CraneliftConfig; pub use crate::config::CraneliftConfig;
pub use crate::debug::{FrameLayout, FrameLayoutChange, FrameLayouts}; pub use crate::debug::{FrameLayout, FrameLayoutChange, FrameLayouts};
pub use crate::debug::{ModuleMemoryOffset, ModuleVmctxInfo, ValueLabelsRanges}; pub use crate::debug::{ModuleInfoMemoryOffset, ModuleInfoVmctxInfo, ValueLabelsRanges};
pub use crate::trampoline::make_trampoline_function_call; pub use crate::trampoline::make_trampoline_function_call;
/// Version number of this crate. /// Version number of this crate.

View File

@@ -6,11 +6,11 @@ use cranelift_codegen::ir::{self, ExternalName};
use wasm_common::entity::EntityRef; use wasm_common::entity::EntityRef;
use wasm_common::{FunctionIndex, LocalFunctionIndex}; use wasm_common::{FunctionIndex, LocalFunctionIndex};
use wasmer_compiler::{JumpTable, Relocation, RelocationTarget, SourceLoc, TrapInformation}; use wasmer_compiler::{JumpTable, Relocation, RelocationTarget, SourceLoc, TrapInformation};
use wasmer_runtime::{Module, TrapCode}; use wasmer_runtime::{ModuleInfo, TrapCode};
/// Implementation of a relocation sink that just saves all the information for later /// Implementation of a relocation sink that just saves all the information for later
pub(crate) struct RelocSink<'a> { pub(crate) struct RelocSink<'a> {
module: &'a Module, module: &'a ModuleInfo,
/// Current function index. /// Current function index.
local_func_index: LocalFunctionIndex, local_func_index: LocalFunctionIndex,
@@ -81,7 +81,7 @@ impl<'a> binemit::RelocSink for RelocSink<'a> {
impl<'a> RelocSink<'a> { impl<'a> RelocSink<'a> {
/// Return a new `RelocSink` instance. /// Return a new `RelocSink` instance.
pub fn new(module: &'a Module, func_index: FunctionIndex) -> Self { pub fn new(module: &'a ModuleInfo, func_index: FunctionIndex) -> Self {
let local_func_index = module let local_func_index = module
.local_func_index(func_index) .local_func_index(func_index)
.expect("The provided function should be local"); .expect("The provided function should be local");

View File

@@ -16,12 +16,12 @@ use cranelift_frontend::{FunctionBuilder, FunctionBuilderContext};
use wasm_common::entity::EntityRef; use wasm_common::entity::EntityRef;
use wasm_common::SignatureIndex; use wasm_common::SignatureIndex;
use wasmer_compiler::{CompileError, FunctionBody}; use wasmer_compiler::{CompileError, FunctionBody};
use wasmer_runtime::{Module, VMOffsets}; use wasmer_runtime::{ModuleInfo, VMOffsets};
/// Create a trampoline for invoking a WebAssembly function. /// Create a trampoline for invoking a WebAssembly function.
pub fn make_trampoline_dynamic_function( pub fn make_trampoline_dynamic_function(
isa: &dyn TargetIsa, isa: &dyn TargetIsa,
module: &Module, module: &ModuleInfo,
offsets: &VMOffsets, offsets: &VMOffsets,
fn_builder_ctx: &mut FunctionBuilderContext, fn_builder_ctx: &mut FunctionBuilderContext,
sig_index: &SignatureIndex, sig_index: &SignatureIndex,

View File

@@ -14,7 +14,7 @@ use wasmer_compiler::{
CustomSectionProtection, FunctionBody, FunctionBodyData, ModuleTranslationState, Relocation, CustomSectionProtection, FunctionBody, FunctionBodyData, ModuleTranslationState, Relocation,
RelocationTarget, SectionBody, SectionIndex, Target, TrapInformation, RelocationTarget, SectionBody, SectionIndex, Target, TrapInformation,
}; };
use wasmer_runtime::{MemoryPlan, Module, TablePlan, TrapCode}; use wasmer_runtime::{MemoryPlan, ModuleInfo, TablePlan, TrapCode};
use inkwell::targets::{InitializationConfig, Target as InkwellTarget}; use inkwell::targets::{InitializationConfig, Target as InkwellTarget};
@@ -56,7 +56,7 @@ impl Compiler for LLVMCompiler {
/// associated relocations. /// associated relocations.
fn compile_module<'data, 'module>( fn compile_module<'data, 'module>(
&self, &self,
module: &'module Module, module: &'module ModuleInfo,
_module_translation: &ModuleTranslationState, _module_translation: &ModuleTranslationState,
function_body_inputs: PrimaryMap<LocalFunctionIndex, FunctionBodyData<'data>>, function_body_inputs: PrimaryMap<LocalFunctionIndex, FunctionBodyData<'data>>,
memory_plans: PrimaryMap<MemoryIndex, MemoryPlan>, memory_plans: PrimaryMap<MemoryIndex, MemoryPlan>,
@@ -142,7 +142,7 @@ impl Compiler for LLVMCompiler {
fn compile_dynamic_function_trampolines( fn compile_dynamic_function_trampolines(
&self, &self,
module: &Module, module: &ModuleInfo,
) -> Result<PrimaryMap<FunctionIndex, FunctionBody>, CompileError> { ) -> Result<PrimaryMap<FunctionIndex, FunctionBody>, CompileError> {
Ok(PrimaryMap::new()) Ok(PrimaryMap::new())
// unimplemented!("Dynamic function trampolines not yet implemented"); // unimplemented!("Dynamic function trampolines not yet implemented");

View File

@@ -10,7 +10,7 @@ use itertools::Itertools;
use target_lexicon::Architecture; use target_lexicon::Architecture;
use wasmer_compiler::{Compiler, CompilerConfig, CpuFeature, Features, Target, Triple}; use wasmer_compiler::{Compiler, CompilerConfig, CpuFeature, Features, Target, Triple};
/// The InkWell Module type /// The InkWell ModuleInfo type
pub type InkwellModule<'ctx> = inkwell::module::Module<'ctx>; pub type InkwellModule<'ctx> = inkwell::module::Module<'ctx>;
/// The InkWell MemoryBuffer type /// The InkWell MemoryBuffer type

View File

@@ -47,8 +47,9 @@ use wasmer_compiler::{
RelocationKind, RelocationTarget, SectionBody, SectionIndex, SourceLoc, WasmResult, RelocationKind, RelocationTarget, SectionBody, SectionIndex, SourceLoc, WasmResult,
}; };
use wasmer_runtime::libcalls::LibCall; use wasmer_runtime::libcalls::LibCall;
use wasmer_runtime::Module as WasmerCompilerModule; use wasmer_runtime::{
use wasmer_runtime::{MemoryPlan, MemoryStyle, TablePlan, VMBuiltinFunctionIndex, VMOffsets}; MemoryPlan, MemoryStyle, ModuleInfo, TablePlan, VMBuiltinFunctionIndex, VMOffsets,
};
// TODO: debugging // TODO: debugging
use std::fs; use std::fs;
@@ -119,7 +120,7 @@ impl FuncTranslator {
pub fn translate( pub fn translate(
&mut self, &mut self,
wasm_module: &WasmerCompilerModule, wasm_module: &ModuleInfo,
local_func_index: &LocalFunctionIndex, local_func_index: &LocalFunctionIndex,
function_body: &FunctionBodyData, function_body: &FunctionBodyData,
config: &LLVMConfig, config: &LLVMConfig,
@@ -1434,7 +1435,7 @@ pub struct LLVMFunctionCodeGenerator<'ctx, 'a> {
*/ */
module: &'a Module<'ctx>, module: &'a Module<'ctx>,
vmoffsets: VMOffsets, vmoffsets: VMOffsets,
wasm_module: &'a WasmerCompilerModule, wasm_module: &'a ModuleInfo,
func_names: &'a SecondaryMap<FunctionIndex, String>, func_names: &'a SecondaryMap<FunctionIndex, String>,
} }
@@ -1442,7 +1443,7 @@ impl<'ctx, 'a> LLVMFunctionCodeGenerator<'ctx, 'a> {
fn translate_operator( fn translate_operator(
&mut self, &mut self,
op: Operator, op: Operator,
module: &WasmerCompilerModule, module: &ModuleInfo,
_source_loc: u32, _source_loc: u32,
) -> Result<(), CompileError> { ) -> Result<(), CompileError> {
// TODO: remove this vmctx by moving everything into CtxType. Values // TODO: remove this vmctx by moving everything into CtxType. Values

View File

@@ -25,7 +25,7 @@ use wasm_common::{
FunctionIndex, FunctionType as FuncType, GlobalIndex, MemoryIndex, Mutability, Pages, FunctionIndex, FunctionType as FuncType, GlobalIndex, MemoryIndex, Mutability, Pages,
SignatureIndex, TableIndex, Type, SignatureIndex, TableIndex, Type,
}; };
use wasmer_runtime::Module as WasmerCompilerModule; use wasmer_runtime::ModuleInfo as WasmerCompilerModule;
use wasmer_runtime::{MemoryPlan, MemoryStyle, TrapCode, VMOffsets}; use wasmer_runtime::{MemoryPlan, MemoryStyle, TrapCode, VMOffsets};
pub fn type_to_llvm_ptr<'ctx>(intrinsics: &Intrinsics<'ctx>, ty: Type) -> PointerType<'ctx> { pub fn type_to_llvm_ptr<'ctx>(intrinsics: &Intrinsics<'ctx>, ty: Type) -> PointerType<'ctx> {

View File

@@ -4,7 +4,7 @@ use byteorder::{LittleEndian, ReadBytesExt};
use std::io::{self, Cursor}; use std::io::{self, Cursor};
use wasmer_runtime_core::vm::Ctx; use wasmer_runtime_core::vm::Ctx;
use wasmer_runtime_core::{ use wasmer_runtime_core::{
module::ModuleInfo, module::Module,
structures::TypedIndex, structures::TypedIndex,
types::{GlobalIndex, LocalOrImport, TableIndex}, types::{GlobalIndex, LocalOrImport, TableIndex},
}; };

View File

@@ -2,7 +2,7 @@
This crate is the base for Compiler implementations. This crate is the base for Compiler implementations.
It performs the translation from a Wasm module into a basic Module, It performs the translation from a Wasm module into a basic ModuleInfo,
but leaves the Wasm function bytecode translation to the compiler implementor. but leaves the Wasm function bytecode translation to the compiler implementor.
### Acknowledgments ### Acknowledgments

View File

@@ -12,7 +12,7 @@ use wasm_common::entity::PrimaryMap;
use wasm_common::{ use wasm_common::{
Features, FunctionIndex, FunctionType, LocalFunctionIndex, MemoryIndex, TableIndex, Features, FunctionIndex, FunctionType, LocalFunctionIndex, MemoryIndex, TableIndex,
}; };
use wasmer_runtime::Module; use wasmer_runtime::ModuleInfo;
use wasmer_runtime::{MemoryPlan, TablePlan}; use wasmer_runtime::{MemoryPlan, TablePlan};
use wasmparser::{validate, OperatorValidatorConfig, ValidatingParserConfig}; use wasmparser::{validate, OperatorValidatorConfig, ValidatingParserConfig};
@@ -70,7 +70,7 @@ pub trait Compiler {
/// or a `CompileError`. /// or a `CompileError`.
fn compile_module<'data, 'module>( fn compile_module<'data, 'module>(
&self, &self,
module: &'module Module, module: &'module ModuleInfo,
module_translation: &ModuleTranslationState, module_translation: &ModuleTranslationState,
// The list of function bodies // The list of function bodies
function_body_inputs: PrimaryMap<LocalFunctionIndex, FunctionBodyData<'data>>, function_body_inputs: PrimaryMap<LocalFunctionIndex, FunctionBodyData<'data>>,
@@ -113,6 +113,6 @@ pub trait Compiler {
/// ``` /// ```
fn compile_dynamic_function_trampolines( fn compile_dynamic_function_trampolines(
&self, &self,
module: &Module, module: &ModuleInfo,
) -> Result<PrimaryMap<FunctionIndex, FunctionBody>, CompileError>; ) -> Result<PrimaryMap<FunctionIndex, FunctionBody>, CompileError>;
} }

View File

@@ -70,7 +70,7 @@ pub use crate::target::{
}; };
#[cfg(feature = "translator")] #[cfg(feature = "translator")]
pub use crate::translator::{ pub use crate::translator::{
to_wasm_error, translate_module, FunctionBodyData, ModuleEnvironment, ModuleTranslation, to_wasm_error, translate_module, FunctionBodyData, ModuleEnvironment, ModuleInfoTranslation,
ModuleTranslationState, ModuleTranslationState,
}; };
pub use crate::trap::TrapInformation; pub use crate::trap::TrapInformation;

View File

@@ -23,7 +23,7 @@ pub enum CustomSectionProtection {
/// A custom section with read permissions, /// A custom section with read permissions,
Read, Read,
// We don't include `ReadWrite` here because it would complicate freeze // We don't include `ReadWrite` here because it would complicate freeze
// and resumption of executing Modules. // and resumption of executing ModuleInfos.
// TODO: add `ReadExecute`. // TODO: add `ReadExecute`.
} }

View File

@@ -101,7 +101,7 @@ impl CpuFeature {
} }
/// This is the target that we will use for compiling /// This is the target that we will use for compiling
/// the WebAssembly Module, and then run it. /// the WebAssembly ModuleInfo, and then run it.
#[derive(Clone, Debug, PartialEq, Eq, Hash)] #[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct Target { pub struct Target {
triple: Triple, triple: Triple,

View File

@@ -13,7 +13,7 @@ use wasm_common::{
GlobalIndex, GlobalInit, GlobalType, ImportIndex, LocalFunctionIndex, MemoryIndex, MemoryType, GlobalIndex, GlobalInit, GlobalType, ImportIndex, LocalFunctionIndex, MemoryIndex, MemoryType,
SignatureIndex, TableIndex, TableType, SignatureIndex, TableIndex, TableType,
}; };
use wasmer_runtime::{Module, TableElements}; use wasmer_runtime::{ModuleInfo, TableElements};
/// Contains function data: bytecode and its offset in the module. /// Contains function data: bytecode and its offset in the module.
#[derive(Hash)] #[derive(Hash)]
@@ -29,9 +29,9 @@ pub struct FunctionBodyData<'a> {
/// yet translated, and data initializers have not yet been copied out of the /// yet translated, and data initializers have not yet been copied out of the
/// original buffer. /// original buffer.
/// The function bodies will be translated by a specific compiler backend. /// The function bodies will be translated by a specific compiler backend.
pub struct ModuleTranslation<'data> { pub struct ModuleInfoTranslation<'data> {
/// Module information. /// ModuleInfo information.
pub module: Module, pub module: ModuleInfo,
/// References to the function bodies. /// References to the function bodies.
pub function_body_inputs: PrimaryMap<LocalFunctionIndex, FunctionBodyData<'data>>, pub function_body_inputs: PrimaryMap<LocalFunctionIndex, FunctionBodyData<'data>>,
@@ -46,7 +46,7 @@ pub struct ModuleTranslation<'data> {
/// Object containing the standalone environment information. /// Object containing the standalone environment information.
pub struct ModuleEnvironment<'data> { pub struct ModuleEnvironment<'data> {
/// The result to be filled in. /// The result to be filled in.
pub result: ModuleTranslation<'data>, pub result: ModuleInfoTranslation<'data>,
imports: u32, imports: u32,
} }
@@ -54,8 +54,8 @@ impl<'data> ModuleEnvironment<'data> {
/// Allocates the environment data structures. /// Allocates the environment data structures.
pub fn new() -> Self { pub fn new() -> Self {
Self { Self {
result: ModuleTranslation { result: ModuleInfoTranslation {
module: Module::new(), module: ModuleInfo::new(),
function_body_inputs: PrimaryMap::new(), function_body_inputs: PrimaryMap::new(),
data_initializers: Vec::new(), data_initializers: Vec::new(),
module_translation: None, module_translation: None,
@@ -65,8 +65,8 @@ impl<'data> ModuleEnvironment<'data> {
} }
/// Translate a wasm module using this environment. This consumes the /// Translate a wasm module using this environment. This consumes the
/// `ModuleEnvironment` and produces a `ModuleTranslation`. /// `ModuleEnvironment` and produces a `ModuleInfoTranslation`.
pub fn translate(mut self, data: &'data [u8]) -> WasmResult<ModuleTranslation<'data>> { pub fn translate(mut self, data: &'data [u8]) -> WasmResult<ModuleInfoTranslation<'data>> {
assert!(self.result.module_translation.is_none()); assert!(self.result.module_translation.is_none());
let module_translation = translate_module(data, &mut self)?; let module_translation = translate_module(data, &mut self)?;
self.result.module_translation = Some(module_translation); self.result.module_translation = Some(module_translation);

View File

@@ -1,5 +1,5 @@
//! This module defines the parser and translator from wasmparser //! This module defines the parser and translator from wasmparser
//! to a common structure `Module`. //! to a common structure `ModuleInfo`.
//! //!
//! It's derived from [cranelift-wasm] but architected for multiple //! It's derived from [cranelift-wasm] but architected for multiple
//! compilers rather than just Cranelift. //! compilers rather than just Cranelift.
@@ -12,7 +12,7 @@ mod state;
mod error; mod error;
mod sections; mod sections;
pub use self::environ::{FunctionBodyData, ModuleEnvironment, ModuleTranslation}; pub use self::environ::{FunctionBodyData, ModuleEnvironment, ModuleInfoTranslation};
pub use self::error::to_wasm_error; pub use self::error::to_wasm_error;
pub use self::module::translate_module; pub use self::module::translate_module;
pub use self::state::ModuleTranslationState; pub use self::state::ModuleTranslationState;

View File

@@ -12,7 +12,7 @@ use crate::WasmResult;
use wasmparser::{CustomSectionContent, ModuleReader, SectionContent}; use wasmparser::{CustomSectionContent, ModuleReader, SectionContent};
/// Translate a sequence of bytes forming a valid Wasm binary into a /// Translate a sequence of bytes forming a valid Wasm binary into a
/// parsed Module `ModuleTranslationState`. /// parsed ModuleInfo `ModuleTranslationState`.
pub fn translate_module<'data>( pub fn translate_module<'data>(
data: &'data [u8], data: &'data [u8],
environ: &mut ModuleEnvironment<'data>, environ: &mut ModuleEnvironment<'data>,

View File

@@ -13,7 +13,8 @@ use wasmer_engine::{
SerializeError, Tunables, SerializeError, Tunables,
}; };
use wasmer_runtime::{ use wasmer_runtime::{
InstanceHandle, Module, SignatureRegistry, VMFunctionBody, VMSharedSignatureIndex, VMTrampoline, InstanceHandle, ModuleInfo, SignatureRegistry, VMFunctionBody, VMSharedSignatureIndex,
VMTrampoline,
}; };
/// A WebAssembly `JIT` Engine. /// A WebAssembly `JIT` Engine.
@@ -212,7 +213,7 @@ impl JITEngineInner {
/// Compile the given function bodies. /// Compile the given function bodies.
pub(crate) fn allocate( pub(crate) fn allocate(
&mut self, &mut self,
module: &Module, module: &ModuleInfo,
functions: &PrimaryMap<LocalFunctionIndex, FunctionBody>, functions: &PrimaryMap<LocalFunctionIndex, FunctionBody>,
function_call_trampolines: &PrimaryMap<SignatureIndex, FunctionBody>, function_call_trampolines: &PrimaryMap<SignatureIndex, FunctionBody>,
dynamic_function_trampolines: &PrimaryMap<FunctionIndex, FunctionBody>, dynamic_function_trampolines: &PrimaryMap<FunctionIndex, FunctionBody>,

View File

@@ -7,7 +7,7 @@ use wasmer_compiler::{
JumpTable, JumpTableOffsets, Relocation, RelocationKind, RelocationTarget, Relocations, JumpTable, JumpTableOffsets, Relocation, RelocationKind, RelocationTarget, Relocations,
SectionBody, SectionIndex, SectionBody, SectionIndex,
}; };
use wasmer_runtime::Module; use wasmer_runtime::ModuleInfo;
use wasmer_runtime::VMFunctionBody; use wasmer_runtime::VMFunctionBody;
fn apply_relocation( fn apply_relocation(
@@ -63,7 +63,7 @@ fn apply_relocation(
/// Links a module, patching the allocated functions with the /// Links a module, patching the allocated functions with the
/// required relocations and jump tables. /// required relocations and jump tables.
pub fn link_module( pub fn link_module(
_module: &Module, _module: &ModuleInfo,
allocated_functions: &PrimaryMap<LocalFunctionIndex, *mut [VMFunctionBody]>, allocated_functions: &PrimaryMap<LocalFunctionIndex, *mut [VMFunctionBody]>,
jt_offsets: &PrimaryMap<LocalFunctionIndex, JumpTableOffsets>, jt_offsets: &PrimaryMap<LocalFunctionIndex, JumpTableOffsets>,
function_relocations: Relocations, function_relocations: Relocations,

View File

@@ -20,7 +20,7 @@ use wasmer_engine::{
SerializableFunctionFrameInfo, SerializeError, SerializableFunctionFrameInfo, SerializeError,
}; };
use wasmer_runtime::{ use wasmer_runtime::{
InstanceHandle, Module, SignatureRegistry, VMFunctionBody, VMSharedSignatureIndex, InstanceHandle, ModuleInfo, SignatureRegistry, VMFunctionBody, VMSharedSignatureIndex,
}; };
use wasmer_runtime::{MemoryPlan, TablePlan}; use wasmer_runtime::{MemoryPlan, TablePlan};
@@ -297,11 +297,11 @@ impl CompiledModule {
} }
impl BaseCompiledModule for CompiledModule { impl BaseCompiledModule for CompiledModule {
fn module(&self) -> &Module { fn module(&self) -> &ModuleInfo {
&self.serializable.module &self.serializable.module
} }
fn module_mut(&mut self) -> &mut Module { fn module_mut(&mut self) -> &mut ModuleInfo {
Arc::get_mut(&mut self.serializable.module).unwrap() Arc::get_mut(&mut self.serializable.module).unwrap()
} }
} }

View File

@@ -7,7 +7,7 @@ use wasm_common::{
}; };
use wasmer_compiler::{FunctionBody, JumpTableOffsets, Relocation, SectionBody, SectionIndex}; use wasmer_compiler::{FunctionBody, JumpTableOffsets, Relocation, SectionBody, SectionIndex};
use wasmer_engine::SerializableFunctionFrameInfo; use wasmer_engine::SerializableFunctionFrameInfo;
use wasmer_runtime::Module; use wasmer_runtime::ModuleInfo;
use wasmer_runtime::{MemoryPlan, TablePlan}; use wasmer_runtime::{MemoryPlan, TablePlan};
/// The compilation related data for a serialized modules /// The compilation related data for a serialized modules
@@ -27,12 +27,12 @@ pub struct SerializableCompilation {
} }
/// Serializable struct that is able to serialize from and to /// Serializable struct that is able to serialize from and to
/// a `CompiledModule`. /// a `CompiledModuleInfo`.
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
pub struct SerializableModule { pub struct SerializableModule {
pub compilation: SerializableCompilation, pub compilation: SerializableCompilation,
pub features: Features, pub features: Features,
pub module: Arc<Module>, pub module: Arc<ModuleInfo>,
pub data_initializers: Box<[OwnedDataInitializer]>, pub data_initializers: Box<[OwnedDataInitializer]>,
// Plans for that module // Plans for that module
pub memory_plans: PrimaryMap<MemoryIndex, MemoryPlan>, pub memory_plans: PrimaryMap<MemoryIndex, MemoryPlan>,

View File

@@ -25,7 +25,8 @@ use wasmer_engine::{
RuntimeError, SerializeError, RuntimeError, SerializeError,
}; };
use wasmer_runtime::{ use wasmer_runtime::{
InstanceHandle, Module, SignatureRegistry, VMFunctionBody, VMSharedSignatureIndex, VMTrampoline, InstanceHandle, ModuleInfo, SignatureRegistry, VMFunctionBody, VMSharedSignatureIndex,
VMTrampoline,
}; };
use wasmer_runtime::{MemoryPlan, TablePlan}; use wasmer_runtime::{MemoryPlan, TablePlan};
@@ -511,11 +512,11 @@ impl NativeModule {
} }
impl CompiledModule for NativeModule { impl CompiledModule for NativeModule {
fn module(&self) -> &Module { fn module(&self) -> &ModuleInfo {
&self.metadata.module &self.metadata.module
} }
fn module_mut(&mut self) -> &mut Module { fn module_mut(&mut self) -> &mut ModuleInfo {
Arc::get_mut(&mut self.metadata.module).unwrap() Arc::get_mut(&mut self.metadata.module).unwrap()
} }
} }

View File

@@ -2,14 +2,14 @@ use serde::{Deserialize, Serialize};
use std::sync::Arc; use std::sync::Arc;
use wasm_common::entity::PrimaryMap; use wasm_common::entity::PrimaryMap;
use wasm_common::{Features, LocalFunctionIndex, MemoryIndex, OwnedDataInitializer, TableIndex}; use wasm_common::{Features, LocalFunctionIndex, MemoryIndex, OwnedDataInitializer, TableIndex};
use wasmer_runtime::Module; use wasmer_runtime::ModuleInfo;
use wasmer_runtime::{MemoryPlan, TablePlan}; use wasmer_runtime::{MemoryPlan, TablePlan};
/// Serializable struct that represents the compiled metadata. /// Serializable struct that represents the compiled metadata.
#[derive(Serialize, Deserialize, Debug)] #[derive(Serialize, Deserialize, Debug)]
pub struct ModuleMetadata { pub struct ModuleMetadata {
pub features: Features, pub features: Features,
pub module: Arc<Module>, pub module: Arc<ModuleInfo>,
pub prefix: String, pub prefix: String,
pub data_initializers: Box<[OwnedDataInitializer]>, pub data_initializers: Box<[OwnedDataInitializer]>,
// The function body lengths (used for reverse-locate traps in the function) // The function body lengths (used for reverse-locate traps in the function)

View File

@@ -1,4 +1,4 @@
use wasmer_runtime::Module; use wasmer_runtime::ModuleInfo;
use downcast_rs::{impl_downcast, Downcast}; use downcast_rs::{impl_downcast, Downcast};
@@ -6,10 +6,10 @@ use downcast_rs::{impl_downcast, Downcast};
/// as a JIT or Native execution. /// as a JIT or Native execution.
pub trait CompiledModule: Downcast { pub trait CompiledModule: Downcast {
/// Return a pointer to a module. /// Return a pointer to a module.
fn module(&self) -> &Module; fn module(&self) -> &ModuleInfo;
/// Return a mutable pointer to a module. /// Return a mutable pointer to a module.
fn module_mut(&mut self) -> &mut Module; fn module_mut(&mut self) -> &mut ModuleInfo;
} }
impl_downcast!(CompiledModule); impl_downcast!(CompiledModule);

View File

@@ -11,7 +11,7 @@ use wasmer_runtime::{
}; };
use wasmer_runtime::{MemoryPlan, TablePlan}; use wasmer_runtime::{MemoryPlan, TablePlan};
use wasmer_runtime::{MemoryStyle, Module}; use wasmer_runtime::{MemoryStyle, ModuleInfo};
/// Import resolver connects imports with available exported values. /// Import resolver connects imports with available exported values.
pub trait Resolver { pub trait Resolver {
@@ -36,7 +36,7 @@ impl Resolver for NullResolver {
} }
/// Get an `ExternType` given a import index. /// Get an `ExternType` given a import index.
fn get_extern_from_import(module: &Module, import_index: &ImportIndex) -> ExternType { fn get_extern_from_import(module: &ModuleInfo, import_index: &ImportIndex) -> ExternType {
match import_index { match import_index {
ImportIndex::Function(index) => { ImportIndex::Function(index) => {
let func = module.signatures[module.functions[*index]].clone(); let func = module.signatures[module.functions[*index]].clone();
@@ -59,7 +59,7 @@ fn get_extern_from_import(module: &Module, import_index: &ImportIndex) -> Extern
/// Get an `ExternType` given an export (and signatures in case is a function). /// Get an `ExternType` given an export (and signatures in case is a function).
fn get_extern_from_export( fn get_extern_from_export(
_module: &Module, _module: &ModuleInfo,
signatures: &SignatureRegistry, signatures: &SignatureRegistry,
export: &Export, export: &Export,
) -> ExternType { ) -> ExternType {
@@ -83,12 +83,12 @@ fn get_extern_from_export(
} }
} }
/// This function allows to match all imports of a `Module` with concrete definitions provided by /// This function allows to match all imports of a `ModuleInfo` with concrete definitions provided by
/// a `Resolver`. /// a `Resolver`.
/// ///
/// If all imports are satisfied returns an `Imports` instance required for a module instantiation. /// If all imports are satisfied returns an `Imports` instance required for a module instantiation.
pub fn resolve_imports( pub fn resolve_imports(
module: &Module, module: &ModuleInfo,
signatures: &SignatureRegistry, signatures: &SignatureRegistry,
resolver: &dyn Resolver, resolver: &dyn Resolver,
finished_dynamic_function_trampolines: &BoxedSlice<FunctionIndex, *const VMFunctionBody>, finished_dynamic_function_trampolines: &BoxedSlice<FunctionIndex, *const VMFunctionBody>,

View File

@@ -1,13 +1,13 @@
//! This module is used for having backtraces in the Wasm runtime. //! This module is used for having backtraces in the Wasm runtime.
//! Once the Compiler has compiled the Module, and we have a set of //! Once the Compiler has compiled the ModuleInfo, and we have a set of
//! compiled functions (addresses and function index) and a module, //! compiled functions (addresses and function index) and a module,
//! then we can use this to set a backtrace for that module. //! then we can use this to set a backtrace for that module.
//! //!
//! # Example //! # Example
//! ```ignore //! ```ignore
//! use wasmer_runtime::{Module, FRAME_INFO}; //! use wasmer_runtime::{ModuleInfo, FRAME_INFO};
//! //!
//! let module: Module = ...; //! let module: ModuleInfo = ...;
//! FRAME_INFO.register(module, compiled_functions); //! FRAME_INFO.register(module, compiled_functions);
//! ``` //! ```
use crate::serialize::SerializableFunctionFrameInfo; use crate::serialize::SerializableFunctionFrameInfo;
@@ -17,7 +17,7 @@ use std::sync::{Arc, RwLock};
use wasm_common::entity::{BoxedSlice, EntityRef, PrimaryMap}; use wasm_common::entity::{BoxedSlice, EntityRef, PrimaryMap};
use wasm_common::LocalFunctionIndex; use wasm_common::LocalFunctionIndex;
use wasmer_compiler::{CompiledFunctionFrameInfo, SourceLoc, TrapInformation}; use wasmer_compiler::{CompiledFunctionFrameInfo, SourceLoc, TrapInformation};
use wasmer_runtime::{Module, VMFunctionBody}; use wasmer_runtime::{ModuleInfo, VMFunctionBody};
lazy_static::lazy_static! { lazy_static::lazy_static! {
/// This is a global cache of backtrace frame information for all active /// This is a global cache of backtrace frame information for all active
@@ -39,7 +39,7 @@ pub struct GlobalFrameInfo {
/// ///
/// The key of this map is the highest address in the module and the value /// The key of this map is the highest address in the module and the value
/// is the module's information, which also contains the start address. /// is the module's information, which also contains the start address.
ranges: BTreeMap<usize, ModuleFrameInfo>, ranges: BTreeMap<usize, ModuleInfoFrameInfo>,
} }
/// An RAII structure used to unregister a module's frame information when the /// An RAII structure used to unregister a module's frame information when the
@@ -50,14 +50,14 @@ pub struct GlobalFrameInfoRegistration {
key: usize, key: usize,
} }
struct ModuleFrameInfo { struct ModuleInfoFrameInfo {
start: usize, start: usize,
functions: BTreeMap<usize, FunctionInfo>, functions: BTreeMap<usize, FunctionInfo>,
module: Arc<Module>, module: Arc<ModuleInfo>,
frame_infos: PrimaryMap<LocalFunctionIndex, SerializableFunctionFrameInfo>, frame_infos: PrimaryMap<LocalFunctionIndex, SerializableFunctionFrameInfo>,
} }
impl ModuleFrameInfo { impl ModuleInfoFrameInfo {
fn function_debug_info( fn function_debug_info(
&self, &self,
local_index: LocalFunctionIndex, local_index: LocalFunctionIndex,
@@ -193,7 +193,7 @@ impl GlobalFrameInfo {
} }
/// Gets a module given a pc /// Gets a module given a pc
fn module_info(&self, pc: usize) -> Option<&ModuleFrameInfo> { fn module_info(&self, pc: usize) -> Option<&ModuleInfoFrameInfo> {
let (end, module_info) = self.ranges.range(pc..).next()?; let (end, module_info) = self.ranges.range(pc..).next()?;
if pc < module_info.start || *end < pc { if pc < module_info.start || *end < pc {
return None; return None;
@@ -202,7 +202,7 @@ impl GlobalFrameInfo {
} }
/// Gets a module given a pc /// Gets a module given a pc
fn module_info_mut(&mut self, pc: usize) -> Option<&mut ModuleFrameInfo> { fn module_info_mut(&mut self, pc: usize) -> Option<&mut ModuleInfoFrameInfo> {
let (end, module_info) = self.ranges.range_mut(pc..).next()?; let (end, module_info) = self.ranges.range_mut(pc..).next()?;
if pc < module_info.start || *end < pc { if pc < module_info.start || *end < pc {
return None; return None;
@@ -226,7 +226,7 @@ impl Drop for GlobalFrameInfoRegistration {
/// then `None` will be returned. Otherwise the returned object, when /// then `None` will be returned. Otherwise the returned object, when
/// dropped, will be used to unregister all name information from this map. /// dropped, will be used to unregister all name information from this map.
pub fn register( pub fn register(
module: Arc<Module>, module: Arc<ModuleInfo>,
finished_functions: &BoxedSlice<LocalFunctionIndex, *mut [VMFunctionBody]>, finished_functions: &BoxedSlice<LocalFunctionIndex, *mut [VMFunctionBody]>,
frame_infos: PrimaryMap<LocalFunctionIndex, SerializableFunctionFrameInfo>, frame_infos: PrimaryMap<LocalFunctionIndex, SerializableFunctionFrameInfo>,
) -> Option<GlobalFrameInfoRegistration> { ) -> Option<GlobalFrameInfoRegistration> {
@@ -264,7 +264,7 @@ pub fn register(
// ... then insert our range and assert nothing was there previously // ... then insert our range and assert nothing was there previously
let prev = info.ranges.insert( let prev = info.ranges.insert(
max, max,
ModuleFrameInfo { ModuleInfoFrameInfo {
start: min, start: min,
functions, functions,
module, module,
@@ -302,9 +302,9 @@ impl FrameInfo {
/// Returns the identifer of the module that this frame is for. /// Returns the identifer of the module that this frame is for.
/// ///
/// Module identifiers are present in the `name` section of a WebAssembly /// ModuleInfo identifiers are present in the `name` section of a WebAssembly
/// binary, but this may not return the exact item in the `name` section. /// binary, but this may not return the exact item in the `name` section.
/// Module names can be overwritten at construction time or perhaps inferred /// ModuleInfo names can be overwritten at construction time or perhaps inferred
/// from file names. The primary purpose of this function is to assist in /// from file names. The primary purpose of this function is to assist in
/// debugging and therefore may be tweaked over time. /// debugging and therefore may be tweaked over time.
/// ///

View File

@@ -5,7 +5,7 @@ use wasm_common::{
TableType, TableType,
}; };
use wasmer_runtime::MemoryError; use wasmer_runtime::MemoryError;
use wasmer_runtime::{LinearMemory, Module, Table, VMGlobalDefinition}; use wasmer_runtime::{LinearMemory, ModuleInfo, Table, VMGlobalDefinition};
use wasmer_runtime::{MemoryPlan, TablePlan}; use wasmer_runtime::{MemoryPlan, TablePlan};
/// Tunables for an engine /// Tunables for an engine
@@ -25,7 +25,7 @@ pub trait Tunables {
/// Allocate memory for just the memories of the current module. /// Allocate memory for just the memories of the current module.
fn create_memories( fn create_memories(
&self, &self,
module: &Module, module: &ModuleInfo,
memory_plans: &PrimaryMap<MemoryIndex, MemoryPlan>, memory_plans: &PrimaryMap<MemoryIndex, MemoryPlan>,
) -> Result<PrimaryMap<LocalMemoryIndex, LinearMemory>, LinkError> { ) -> Result<PrimaryMap<LocalMemoryIndex, LinearMemory>, LinkError> {
let num_imports = module.num_imported_memories; let num_imports = module.num_imported_memories;
@@ -44,7 +44,7 @@ pub trait Tunables {
/// Allocate memory for just the tables of the current module. /// Allocate memory for just the tables of the current module.
fn create_tables( fn create_tables(
&self, &self,
module: &Module, module: &ModuleInfo,
table_plans: &PrimaryMap<TableIndex, TablePlan>, table_plans: &PrimaryMap<TableIndex, TablePlan>,
) -> Result<PrimaryMap<LocalTableIndex, Table>, LinkError> { ) -> Result<PrimaryMap<LocalTableIndex, Table>, LinkError> {
let num_imports = module.num_imported_tables; let num_imports = module.num_imported_tables;
@@ -61,7 +61,7 @@ pub trait Tunables {
/// with initializers applied. /// with initializers applied.
fn create_globals( fn create_globals(
&self, &self,
module: &Module, module: &ModuleInfo,
) -> Result<PrimaryMap<LocalGlobalIndex, VMGlobalDefinition>, LinkError> { ) -> Result<PrimaryMap<LocalGlobalIndex, VMGlobalDefinition>, LinkError> {
let num_imports = module.num_imported_globals; let num_imports = module.num_imported_globals;
let mut vmctx_globals = PrimaryMap::with_capacity(module.globals.len() - num_imports); let mut vmctx_globals = PrimaryMap::with_capacity(module.globals.len() - num_imports);

View File

@@ -12,7 +12,7 @@ use crate::vmcontext::{
VMSharedSignatureIndex, VMTableDefinition, VMTableImport, VMSharedSignatureIndex, VMTableDefinition, VMTableImport,
}; };
use crate::{ExportFunction, ExportGlobal, ExportMemory, ExportTable}; use crate::{ExportFunction, ExportGlobal, ExportMemory, ExportTable};
use crate::{Module, TableElements, VMOffsets}; use crate::{ModuleInfo, TableElements, VMOffsets};
use memoffset::offset_of; use memoffset::offset_of;
use more_asserts::assert_lt; use more_asserts::assert_lt;
use std::alloc::{self, Layout}; use std::alloc::{self, Layout};
@@ -62,8 +62,8 @@ cfg_if::cfg_if! {
/// This is repr(C) to ensure that the vmctx field is last. /// This is repr(C) to ensure that the vmctx field is last.
#[repr(C)] #[repr(C)]
pub(crate) struct Instance { pub(crate) struct Instance {
/// The `Module` this `Instance` was instantiated from. /// The `ModuleInfo` this `Instance` was instantiated from.
module: Arc<Module>, module: Arc<ModuleInfo>,
/// Offsets in the `vmctx` region. /// Offsets in the `vmctx` region.
offsets: VMOffsets, offsets: VMOffsets,
@@ -114,11 +114,11 @@ impl Instance {
unsafe { *self.signature_ids_ptr().add(index) } unsafe { *self.signature_ids_ptr().add(index) }
} }
pub(crate) fn module(&self) -> &Arc<Module> { pub(crate) fn module(&self) -> &Arc<ModuleInfo> {
&self.module &self.module
} }
pub(crate) fn module_ref(&self) -> &Module { pub(crate) fn module_ref(&self) -> &ModuleInfo {
&*self.module &*self.module
} }
@@ -779,7 +779,7 @@ impl InstanceHandle {
/// the `wasmer` crate API rather than this type since that is vetted for /// the `wasmer` crate API rather than this type since that is vetted for
/// safety. /// safety.
pub unsafe fn new( pub unsafe fn new(
module: Arc<Module>, module: Arc<ModuleInfo>,
finished_functions: BoxedSlice<LocalFunctionIndex, *mut [VMFunctionBody]>, finished_functions: BoxedSlice<LocalFunctionIndex, *mut [VMFunctionBody]>,
finished_memories: BoxedSlice<LocalMemoryIndex, LinearMemory>, finished_memories: BoxedSlice<LocalMemoryIndex, LinearMemory>,
finished_tables: BoxedSlice<LocalTableIndex, Table>, finished_tables: BoxedSlice<LocalTableIndex, Table>,
@@ -939,12 +939,12 @@ impl InstanceHandle {
} }
/// Return a reference-counting pointer to a module. /// Return a reference-counting pointer to a module.
pub fn module(&self) -> &Arc<Module> { pub fn module(&self) -> &Arc<ModuleInfo> {
self.instance().module() self.instance().module()
} }
/// Return a reference to a module. /// Return a reference to a module.
pub fn module_ref(&self) -> &Module { pub fn module_ref(&self) -> &ModuleInfo {
self.instance().module_ref() self.instance().module_ref()
} }
@@ -1180,7 +1180,7 @@ fn initialize_tables(instance: &Instance) -> Result<(), Trap> {
} }
/// Initialize the `Instance::passive_elements` map by resolving the /// Initialize the `Instance::passive_elements` map by resolving the
/// `Module::passive_elements`'s `FunctionIndex`s into `VMCallerCheckedAnyfunc`s for /// `ModuleInfo::passive_elements`'s `FunctionIndex`s into `VMCallerCheckedAnyfunc`s for
/// this instance. /// this instance.
fn initialize_passive_elements(instance: &Instance) { fn initialize_passive_elements(instance: &Instance) {
let mut passive_elements = instance.passive_elements.borrow_mut(); let mut passive_elements = instance.passive_elements.borrow_mut();

View File

@@ -42,8 +42,8 @@ pub use crate::instance::InstanceHandle;
pub use crate::memory::{LinearMemory, MemoryError}; pub use crate::memory::{LinearMemory, MemoryError};
pub use crate::mmap::Mmap; pub use crate::mmap::Mmap;
pub use crate::module::{ pub use crate::module::{
ExportsIterator, ImportsIterator, MemoryPlan, MemoryStyle, Module, TableElements, TablePlan, ExportsIterator, ImportsIterator, MemoryPlan, MemoryStyle, ModuleInfo, TableElements,
TableStyle, TablePlan, TableStyle,
}; };
pub use crate::probestack::PROBESTACK; pub use crate::probestack::PROBESTACK;
pub use crate::sig_registry::SignatureRegistry; pub use crate::sig_registry::SignatureRegistry;

View File

@@ -93,7 +93,7 @@ impl Default for ModuleId {
/// A translated WebAssembly module, excluding the function bodies and /// A translated WebAssembly module, excluding the function bodies and
/// memory initializers. /// memory initializers.
#[derive(Debug, Serialize, Deserialize)] #[derive(Debug, Serialize, Deserialize)]
pub struct Module { pub struct ModuleInfo {
/// A unique identifier (within this process) for this module. /// A unique identifier (within this process) for this module.
/// ///
/// We skip serialization/deserialization of this field, as it /// We skip serialization/deserialization of this field, as it
@@ -160,7 +160,7 @@ pub struct Module {
pub num_imported_globals: usize, pub num_imported_globals: usize,
} }
impl Module { impl ModuleInfo {
/// Allocates the module data structures. /// Allocates the module data structures.
pub fn new() -> Self { pub fn new() -> Self {
Self { Self {
@@ -353,7 +353,7 @@ impl Module {
} }
} }
impl fmt::Display for Module { impl fmt::Display for ModuleInfo {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.name()) write!(f, "{}", self.name())
} }

View File

@@ -23,13 +23,13 @@ pub struct VMFunctionImport {
#[cfg(test)] #[cfg(test)]
mod test_vmfunction_import { mod test_vmfunction_import {
use super::VMFunctionImport; use super::VMFunctionImport;
use crate::{Module, VMOffsets}; use crate::{ModuleInfo, VMOffsets};
use memoffset::offset_of; use memoffset::offset_of;
use std::mem::size_of; use std::mem::size_of;
#[test] #[test]
fn check_vmfunction_import_offsets() { fn check_vmfunction_import_offsets() {
let module = Module::new(); let module = ModuleInfo::new();
let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module); let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module);
assert_eq!( assert_eq!(
size_of::<VMFunctionImport>(), size_of::<VMFunctionImport>(),
@@ -69,13 +69,13 @@ pub struct VMDynamicFunctionImportContext<T: Sized> {
#[cfg(test)] #[cfg(test)]
mod test_vmdynamicfunction_import_context { mod test_vmdynamicfunction_import_context {
use super::VMDynamicFunctionImportContext; use super::VMDynamicFunctionImportContext;
use crate::{Module, VMOffsets}; use crate::{ModuleInfo, VMOffsets};
use memoffset::offset_of; use memoffset::offset_of;
use std::mem::size_of; use std::mem::size_of;
#[test] #[test]
fn check_vmdynamicfunction_import_context_offsets() { fn check_vmdynamicfunction_import_context_offsets() {
let module = Module::new(); let module = ModuleInfo::new();
let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module); let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module);
assert_eq!( assert_eq!(
size_of::<VMDynamicFunctionImportContext<usize>>(), size_of::<VMDynamicFunctionImportContext<usize>>(),
@@ -145,13 +145,13 @@ pub struct VMTableImport {
#[cfg(test)] #[cfg(test)]
mod test_vmtable_import { mod test_vmtable_import {
use super::VMTableImport; use super::VMTableImport;
use crate::{Module, VMOffsets}; use crate::{ModuleInfo, VMOffsets};
use memoffset::offset_of; use memoffset::offset_of;
use std::mem::size_of; use std::mem::size_of;
#[test] #[test]
fn check_vmtable_import_offsets() { fn check_vmtable_import_offsets() {
let module = Module::new(); let module = ModuleInfo::new();
let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module); let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module);
assert_eq!( assert_eq!(
size_of::<VMTableImport>(), size_of::<VMTableImport>(),
@@ -183,13 +183,13 @@ pub struct VMMemoryImport {
#[cfg(test)] #[cfg(test)]
mod test_vmmemory_import { mod test_vmmemory_import {
use super::VMMemoryImport; use super::VMMemoryImport;
use crate::{Module, VMOffsets}; use crate::{ModuleInfo, VMOffsets};
use memoffset::offset_of; use memoffset::offset_of;
use std::mem::size_of; use std::mem::size_of;
#[test] #[test]
fn check_vmmemory_import_offsets() { fn check_vmmemory_import_offsets() {
let module = Module::new(); let module = ModuleInfo::new();
let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module); let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module);
assert_eq!( assert_eq!(
size_of::<VMMemoryImport>(), size_of::<VMMemoryImport>(),
@@ -218,13 +218,13 @@ pub struct VMGlobalImport {
#[cfg(test)] #[cfg(test)]
mod test_vmglobal_import { mod test_vmglobal_import {
use super::VMGlobalImport; use super::VMGlobalImport;
use crate::{Module, VMOffsets}; use crate::{ModuleInfo, VMOffsets};
use memoffset::offset_of; use memoffset::offset_of;
use std::mem::size_of; use std::mem::size_of;
#[test] #[test]
fn check_vmglobal_import_offsets() { fn check_vmglobal_import_offsets() {
let module = Module::new(); let module = ModuleInfo::new();
let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module); let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module);
assert_eq!( assert_eq!(
size_of::<VMGlobalImport>(), size_of::<VMGlobalImport>(),
@@ -313,13 +313,13 @@ impl VMMemoryDefinition {
#[cfg(test)] #[cfg(test)]
mod test_vmmemory_definition { mod test_vmmemory_definition {
use super::VMMemoryDefinition; use super::VMMemoryDefinition;
use crate::{Module, VMOffsets}; use crate::{ModuleInfo, VMOffsets};
use memoffset::offset_of; use memoffset::offset_of;
use std::mem::size_of; use std::mem::size_of;
#[test] #[test]
fn check_vmmemory_definition_offsets() { fn check_vmmemory_definition_offsets() {
let module = Module::new(); let module = ModuleInfo::new();
let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module); let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module);
assert_eq!( assert_eq!(
size_of::<VMMemoryDefinition>(), size_of::<VMMemoryDefinition>(),
@@ -357,13 +357,13 @@ pub struct VMTableDefinition {
#[cfg(test)] #[cfg(test)]
mod test_vmtable_definition { mod test_vmtable_definition {
use super::VMTableDefinition; use super::VMTableDefinition;
use crate::{Module, VMOffsets}; use crate::{ModuleInfo, VMOffsets};
use memoffset::offset_of; use memoffset::offset_of;
use std::mem::size_of; use std::mem::size_of;
#[test] #[test]
fn check_vmtable_definition_offsets() { fn check_vmtable_definition_offsets() {
let module = Module::new(); let module = ModuleInfo::new();
let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module); let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module);
assert_eq!( assert_eq!(
size_of::<VMTableDefinition>(), size_of::<VMTableDefinition>(),
@@ -395,7 +395,7 @@ pub struct VMGlobalDefinition {
#[cfg(test)] #[cfg(test)]
mod test_vmglobal_definition { mod test_vmglobal_definition {
use super::VMGlobalDefinition; use super::VMGlobalDefinition;
use crate::{Module, VMOffsets}; use crate::{ModuleInfo, VMOffsets};
use more_asserts::assert_ge; use more_asserts::assert_ge;
use std::mem::{align_of, size_of}; use std::mem::{align_of, size_of};
@@ -410,7 +410,7 @@ mod test_vmglobal_definition {
#[test] #[test]
fn check_vmglobal_definition_offsets() { fn check_vmglobal_definition_offsets() {
let module = Module::new(); let module = ModuleInfo::new();
let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module); let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module);
assert_eq!( assert_eq!(
size_of::<VMGlobalDefinition>(), size_of::<VMGlobalDefinition>(),
@@ -420,7 +420,7 @@ mod test_vmglobal_definition {
#[test] #[test]
fn check_vmglobal_begins_aligned() { fn check_vmglobal_begins_aligned() {
let module = Module::new(); let module = ModuleInfo::new();
let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module); let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module);
assert_eq!(offsets.vmctx_globals_begin() % 16, 0); assert_eq!(offsets.vmctx_globals_begin() % 16, 0);
} }
@@ -562,13 +562,13 @@ pub struct VMSharedSignatureIndex(u32);
#[cfg(test)] #[cfg(test)]
mod test_vmshared_signature_index { mod test_vmshared_signature_index {
use super::VMSharedSignatureIndex; use super::VMSharedSignatureIndex;
use crate::module::Module; use crate::module::ModuleInfo;
use crate::vmoffsets::{TargetSharedSignatureIndex, VMOffsets}; use crate::vmoffsets::{TargetSharedSignatureIndex, VMOffsets};
use std::mem::size_of; use std::mem::size_of;
#[test] #[test]
fn check_vmshared_signature_index() { fn check_vmshared_signature_index() {
let module = Module::new(); let module = ModuleInfo::new();
let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module); let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module);
assert_eq!( assert_eq!(
size_of::<VMSharedSignatureIndex>(), size_of::<VMSharedSignatureIndex>(),
@@ -616,13 +616,13 @@ pub struct VMCallerCheckedAnyfunc {
#[cfg(test)] #[cfg(test)]
mod test_vmcaller_checked_anyfunc { mod test_vmcaller_checked_anyfunc {
use super::VMCallerCheckedAnyfunc; use super::VMCallerCheckedAnyfunc;
use crate::{Module, VMOffsets}; use crate::{ModuleInfo, VMOffsets};
use memoffset::offset_of; use memoffset::offset_of;
use std::mem::size_of; use std::mem::size_of;
#[test] #[test]
fn check_vmcaller_checked_anyfunc_offsets() { fn check_vmcaller_checked_anyfunc_offsets() {
let module = Module::new(); let module = ModuleInfo::new();
let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module); let offsets = VMOffsets::new(size_of::<*mut u8>() as u8, &module);
assert_eq!( assert_eq!(
size_of::<VMCallerCheckedAnyfunc>(), size_of::<VMCallerCheckedAnyfunc>(),

View File

@@ -3,7 +3,7 @@
#![deny(intra_doc_link_resolution_failure)] #![deny(intra_doc_link_resolution_failure)]
use crate::module::Module; use crate::module::ModuleInfo;
use crate::VMBuiltinFunctionIndex; use crate::VMBuiltinFunctionIndex;
use more_asserts::assert_lt; use more_asserts::assert_lt;
use std::convert::TryFrom; use std::convert::TryFrom;
@@ -53,7 +53,7 @@ pub struct VMOffsets {
impl VMOffsets { impl VMOffsets {
/// Return a new `VMOffsets` instance, for a given pointer size. /// Return a new `VMOffsets` instance, for a given pointer size.
pub fn new(pointer_size: u8, module: &Module) -> Self { pub fn new(pointer_size: u8, module: &ModuleInfo) -> Self {
Self { Self {
pointer_size, pointer_size,
num_signature_ids: cast_to_u32(module.signatures.len()), num_signature_ids: cast_to_u32(module.signatures.len()),