Trait cretonne_module::Backend [] [src]

pub trait Backend where
    Self: Sized
{ type CompiledFunction; type CompiledData; type FinalizedFunction; type FinalizedData; fn isa(&self) -> &TargetIsa;
fn declare_function(&mut self, name: &str, linkage: Linkage);
fn declare_data(&mut self, name: &str, linkage: Linkage, writable: bool);
fn define_function(
        &mut self,
        name: &str,
        ctx: &Context,
        namespace: &ModuleNamespace<Self>,
        code_size: u32
    ) -> Result<Self::CompiledFunction, CtonError>;
fn define_data(
        &mut self,
        name: &str,
        data_ctx: &DataContext,
        namespace: &ModuleNamespace<Self>
    ) -> Result<Self::CompiledData, CtonError>;
fn write_data_funcaddr(
        &mut self,
        data: &mut Self::CompiledData,
        offset: usize,
        what: FuncRef
    );
fn write_data_dataaddr(
        &mut self,
        data: &mut Self::CompiledData,
        offset: usize,
        what: GlobalVar,
        addend: Addend
    );
fn finalize_function(
        &mut self,
        func: &Self::CompiledFunction,
        namespace: &ModuleNamespace<Self>
    ) -> Self::FinalizedFunction;
fn finalize_data(
        &mut self,
        data: &Self::CompiledData,
        namespace: &ModuleNamespace<Self>
    ) -> Self::FinalizedData; }

A Backend implements the functionality needed to support a Module.

Associated Types

The results of compiling a function.

The results of "compiling" a data object.

The completed output artifact for a function, if this is meaningful for the Backend.

The completed output artifact for a data object, if this is meaningful for the Backend.

Required Methods

Return the TargetIsa to compile for.

Declare a function.

Declare a data object.

Define a function, producing the function body from the given Context.

Functions must be declared before being defined.

Define a zero-initialized data object of the given size.

Data objects must be declared before being defined.

TODO: Is CtonError the right error code here?

Write the address of what into the data for data at offset. data must refer to a defined data object.

Write the address of what plus addend into the data for data at offset. data must refer to a defined data object.

Perform all outstanding relocations on the given function. This requires all Local and Export entities referenced to be defined.

Perform all outstanding relocations on the given data object. This requires all Local and Export entities referenced to be defined.

Implementors