pub enum EmittedEntryShape {
FastInt,
Buffer,
}Expand description
Run LLVM’s -O3 middle-end pipeline on module. The host-side
JIT engine handles backend codegen-time optimisation; this
function fills in the IR-level passes (mem2reg, instcombine, gvn,
licm, loop-unroll, SLP-vectorize, …) that MCJIT does not invoke
on its own.
The implementation lazily initialises LLVM’s native target the
first time it is called — required by Target::from_triple /
create_target_machine. Subsequent calls re-use the initialised
target state.
Which ABI shape the emitted entry symbol exposes. Drives the
build.rs binding-generator’s choice between a typed (i64...) -> i64
extern declaration (fast path) and a buffer-protocol call through
relon-rs-shims::call_buffer_entry.
Variants§
FastInt
extern "C" fn(i64, ...) -> i64. Source qualified for the
dispatch-boundary fast path (Int-only #main(Int...) -> Int,
arity <= 8, no string/list/closure). The binding wraps the
extern with a thin Rust shim.
Buffer
Full buffer-protocol entry:
extern "C" fn(*const ArenaState, i32, i32, i32, i32, i64) -> i32.
Source has string/list arguments or returns, calls into
stdlib helpers, or uses helper functions. The binding marshals
typed Rust args into / out of an arena buffer through
relon-rs-shims::call_buffer_entry.
Trait Implementations§
Source§impl Clone for EmittedEntryShape
impl Clone for EmittedEntryShape
Source§fn clone(&self) -> EmittedEntryShape
fn clone(&self) -> EmittedEntryShape
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for EmittedEntryShape
Source§impl Debug for EmittedEntryShape
impl Debug for EmittedEntryShape
impl Eq for EmittedEntryShape
Source§impl PartialEq for EmittedEntryShape
impl PartialEq for EmittedEntryShape
Source§fn eq(&self, other: &EmittedEntryShape) -> bool
fn eq(&self, other: &EmittedEntryShape) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for EmittedEntryShape
Auto Trait Implementations§
impl Freeze for EmittedEntryShape
impl RefUnwindSafe for EmittedEntryShape
impl Send for EmittedEntryShape
impl Sync for EmittedEntryShape
impl Unpin for EmittedEntryShape
impl UnsafeUnpin for EmittedEntryShape
impl UnwindSafe for EmittedEntryShape
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more