Trait Compiler

Source
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 { ... }
}
Available on crate feature compiler only.
Expand description

An implementation of a Compiler from parsed WebAssembly module to Compiled native code.

Required Methods§

Source

fn name(&self) -> &str

Returns a descriptive name for this compiler.

Note that this is an API breaking change since 3.0

Source

fn deterministic_id(&self) -> String

Returns the deterministic id of this compiler. Same compilers with different optimizations map to different deterministic IDs.

Source

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.

Source

fn get_middlewares(&self) -> &[Arc<dyn ModuleMiddleware>]

Get the middlewares for this compiler

Provided Methods§

Source

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.

Source

fn validate_module( &self, features: &Features, data: &[u8], ) -> Result<(), CompileError>

Available on crate feature translator only.

Validates a module.

It returns the a succesful Result in case is valid, CompileError in case is not.

Source

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.

Source

fn get_cpu_features_used( &self, cpu_features: &EnumSet<CpuFeature>, ) -> EnumSet<CpuFeature>

Get the CpuFeatues used by the compiler

Source

fn get_perfmap_enabled(&self) -> bool

Get whether perfmap is enabled or not.

Implementors§