pub trait Compiler: Send + Debug {
// Required methods
fn name(&self) -> &str;
fn deterministic_id(&self) -> String;
fn compile_module(
&self,
target: &Target,
module: &CompileModuleInfo,
module_translation: &ModuleTranslationState,
function_body_inputs: PrimaryMap<LocalFunctionIndex, FunctionBodyData<'_>>,
) -> Result<Compilation, CompileError>;
fn get_middlewares(&self) -> &[Arc<dyn ModuleMiddleware>];
// Provided methods
fn with_opts(
&mut self,
suggested_compiler_opts: &UserCompilerOptimizations,
) -> Result<(), CompileError> { ... }
fn validate_module(
&self,
features: &Features,
data: &[u8],
) -> Result<(), CompileError> { ... }
fn experimental_native_compile_module(
&self,
_target: &Target,
_module: &CompileModuleInfo,
_module_translation: &ModuleTranslationState,
_function_body_inputs: &PrimaryMap<LocalFunctionIndex, FunctionBodyData<'_>>,
_symbol_registry: &dyn SymbolRegistry,
_wasmer_metadata: &[u8],
) -> Option<Result<Vec<u8>, CompileError>> { ... }
fn get_cpu_features_used(
&self,
cpu_features: &EnumSet<CpuFeature>,
) -> EnumSet<CpuFeature> { ... }
fn get_perfmap_enabled(&self) -> bool { ... }
}
compiler
only.Expand description
An implementation of a Compiler from parsed WebAssembly module to Compiled native code.
Required Methods§
Sourcefn name(&self) -> &str
fn name(&self) -> &str
Returns a descriptive name for this compiler.
Note that this is an API breaking change since 3.0
Sourcefn deterministic_id(&self) -> String
fn deterministic_id(&self) -> String
Returns the deterministic id of this compiler. Same compilers with different optimizations map to different deterministic IDs.
Sourcefn compile_module(
&self,
target: &Target,
module: &CompileModuleInfo,
module_translation: &ModuleTranslationState,
function_body_inputs: PrimaryMap<LocalFunctionIndex, FunctionBodyData<'_>>,
) -> Result<Compilation, CompileError>
fn compile_module( &self, target: &Target, module: &CompileModuleInfo, module_translation: &ModuleTranslationState, function_body_inputs: PrimaryMap<LocalFunctionIndex, FunctionBodyData<'_>>, ) -> Result<Compilation, CompileError>
Compiles a parsed module.
It returns the Compilation
or a CompileError
.
Sourcefn get_middlewares(&self) -> &[Arc<dyn ModuleMiddleware>]
fn get_middlewares(&self) -> &[Arc<dyn ModuleMiddleware>]
Get the middlewares for this compiler
Provided Methods§
Sourcefn with_opts(
&mut self,
suggested_compiler_opts: &UserCompilerOptimizations,
) -> Result<(), CompileError>
fn with_opts( &mut self, suggested_compiler_opts: &UserCompilerOptimizations, ) -> Result<(), CompileError>
Add suggested optimizations to this compiler.
§Note
Not every compiler supports every optimization. This function may fail (i.e. not set the suggested optimizations) silently if the underlying compiler does not support one or more optimizations.
Sourcefn validate_module(
&self,
features: &Features,
data: &[u8],
) -> Result<(), CompileError>
Available on crate feature translator
only.
fn validate_module( &self, features: &Features, data: &[u8], ) -> Result<(), CompileError>
translator
only.Validates a module.
It returns the a succesful Result in case is valid, CompileError
in case is not.
Sourcefn experimental_native_compile_module(
&self,
_target: &Target,
_module: &CompileModuleInfo,
_module_translation: &ModuleTranslationState,
_function_body_inputs: &PrimaryMap<LocalFunctionIndex, FunctionBodyData<'_>>,
_symbol_registry: &dyn SymbolRegistry,
_wasmer_metadata: &[u8],
) -> Option<Result<Vec<u8>, CompileError>>
fn experimental_native_compile_module( &self, _target: &Target, _module: &CompileModuleInfo, _module_translation: &ModuleTranslationState, _function_body_inputs: &PrimaryMap<LocalFunctionIndex, FunctionBodyData<'_>>, _symbol_registry: &dyn SymbolRegistry, _wasmer_metadata: &[u8], ) -> Option<Result<Vec<u8>, CompileError>>
Compiles a module into a native object file.
It returns the bytes as a &[u8]
or a CompileError
.
Sourcefn get_cpu_features_used(
&self,
cpu_features: &EnumSet<CpuFeature>,
) -> EnumSet<CpuFeature>
fn get_cpu_features_used( &self, cpu_features: &EnumSet<CpuFeature>, ) -> EnumSet<CpuFeature>
Get the CpuFeatues used by the compiler
Sourcefn get_perfmap_enabled(&self) -> bool
fn get_perfmap_enabled(&self) -> bool
Get whether perfmap
is enabled or not.