Trait ModuleCodeGenerator

Source
pub trait ModuleCodeGenerator<FCG: FunctionCodeGenerator<E>, RM: RunnableModule, E: Debug> {
    // Required methods
    fn new() -> Self;
    fn new_with_target(
        triple: Option<String>,
        cpu_name: Option<String>,
        cpu_features: Option<String>,
    ) -> Self;
    fn backend_id() -> &'static str;
    fn feed_import_function(&mut self, _sigindex: SigIndex) -> Result<(), E>;
    fn feed_signatures(
        &mut self,
        signatures: Map<SigIndex, FuncSig>,
    ) -> Result<(), E>;
    fn feed_function_signatures(
        &mut self,
        assoc: Map<FuncIndex, SigIndex>,
    ) -> Result<(), E>;
    fn check_precondition(&mut self, module_info: &ModuleInfo) -> Result<(), E>;
    fn next_function(
        &mut self,
        module_info: Arc<RwLock<ModuleInfo>>,
        loc: WasmSpan,
    ) -> Result<&mut FCG, E>;
    fn finalize(
        self,
        module_info: &ModuleInfo,
    ) -> Result<(RM, Option<DebugMetadata>, Box<dyn CacheGen>), E>;
    unsafe fn from_cache(
        cache: Artifact,
        _: Token,
    ) -> Result<ModuleInner, CacheError>;

    // Provided methods
    fn requires_pre_validation() -> bool { ... }
    fn feed_compiler_config(
        &mut self,
        _config: &CompilerConfig,
    ) -> Result<(), E> { ... }
}
Expand description

A trait that represents the functions needed to be implemented to generate code for a module.

Required Methods§

Source

fn new() -> Self

Creates a new module code generator.

Source

fn new_with_target( triple: Option<String>, cpu_name: Option<String>, cpu_features: Option<String>, ) -> Self

Creates a new module code generator for specified target.

Source

fn backend_id() -> &'static str

Returns the backend id associated with this MCG.

Source

fn feed_import_function(&mut self, _sigindex: SigIndex) -> Result<(), E>

Adds an import function.

Source

fn feed_signatures( &mut self, signatures: Map<SigIndex, FuncSig>, ) -> Result<(), E>

Sets the signatures.

Source

fn feed_function_signatures( &mut self, assoc: Map<FuncIndex, SigIndex>, ) -> Result<(), E>

Sets function signatures.

Source

fn check_precondition(&mut self, module_info: &ModuleInfo) -> Result<(), E>

Checks the precondition for a module.

Source

fn next_function( &mut self, module_info: Arc<RwLock<ModuleInfo>>, loc: WasmSpan, ) -> Result<&mut FCG, E>

Creates a new function and returns the function-scope code generator for it.

Source

fn finalize( self, module_info: &ModuleInfo, ) -> Result<(RM, Option<DebugMetadata>, Box<dyn CacheGen>), E>

Finalizes this module.

Source

unsafe fn from_cache( cache: Artifact, _: Token, ) -> Result<ModuleInner, CacheError>

Creates a module from cache.

Provided Methods§

Source

fn requires_pre_validation() -> bool

It sets if the current compiler requires validation before compilation

Source

fn feed_compiler_config(&mut self, _config: &CompilerConfig) -> Result<(), E>

Feeds the compiler config.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§