pub struct SimpleJITBuilder { /* private fields */ }Expand description
A builder for SimpleJITModule.
Implementations§
Source§impl SimpleJITBuilder
impl SimpleJITBuilder
Sourcepub fn new(libcall_names: Box<dyn Fn(LibCall) -> String>) -> Self
pub fn new(libcall_names: Box<dyn Fn(LibCall) -> String>) -> Self
Create a new SimpleJITBuilder.
The libcall_names function provides a way to translate cranelift_codegen’s ir::LibCall
enum to symbols. LibCalls are inserted in the IR as part of the legalization for certain
floating point instructions, and for stack probes. If you don’t know what to use for this
argument, use cranelift_module::default_libcall_names().
Sourcepub fn with_isa(
isa: Box<dyn TargetIsa>,
libcall_names: Box<dyn Fn(LibCall) -> String>,
) -> Self
pub fn with_isa( isa: Box<dyn TargetIsa>, libcall_names: Box<dyn Fn(LibCall) -> String>, ) -> Self
Create a new SimpleJITBuilder with an arbitrary target. This is mainly
useful for testing.
SimpleJIT requires a TargetIsa configured for non-PIC.
To create a SimpleJITBuilder for native use, use the new constructor
instead.
The libcall_names function provides a way to translate cranelift_codegen’s ir::LibCall
enum to symbols. LibCalls are inserted in the IR as part of the legalization for certain
floating point instructions, and for stack probes. If you don’t know what to use for this
argument, use cranelift_module::default_libcall_names().
Sourcepub fn symbol<K>(&mut self, name: K, ptr: *const u8) -> &Self
pub fn symbol<K>(&mut self, name: K, ptr: *const u8) -> &Self
Define a symbol in the internal symbol table.
The JIT will use the symbol table to resolve names that are declared, but not defined, in the module being compiled. A common example is external functions. With this method, functions and data can be exposed to the code being compiled which are defined by the host.
If a symbol is defined more than once, the most recent definition will be retained.
If the JIT fails to find a symbol in its internal table, it will fall back to a platform-specific search (this typically involves searching the current process for public symbols, followed by searching the platform’s C runtime).