Skip to main content

GlobalOrcJit

Struct GlobalOrcJit 

Source
pub(crate) struct GlobalOrcJit {
    pub(crate) builtins_jd: JITDylibRef,
    pub(crate) builtins_defined: Mutex<HashSet<CString>>,
    pub(crate) next_dylib_id: AtomicU64,
    pub(crate) memory_counters: &'static JitMemoryCounters,
    pub(crate) jit: LLJIT,
}
Expand description

Process-global shared LLJIT instance.

ORC/LLJIT is thread-safe and designed to be shared. Individual compilers get their own JITDylib for symbol isolation.

Builtin function pointers (absolute symbols) are defined once in a shared builtins JITDylib. Each per-compiler JITDylib links against the builtins JD so compiled code can resolve them without duplicating definitions.

Fields§

§builtins_jd: JITDylibRef

Shared JITDylib containing absolute symbols for builtin functions. Added to each per-compiler JITDylib’s link order.

§builtins_defined: Mutex<HashSet<CString>>

Symbols already defined in the builtins JD.

§next_dylib_id: AtomicU64§memory_counters: &'static JitMemoryCounters

Live JIT memory counters, updated by the C++ MemoryUsagePlugin.

§jit: LLJIT

Implementations§

Source§

impl GlobalOrcJit

Source

pub(crate) fn global() -> &'static OnceLock<Result<Self, String>>

Source

pub(crate) fn try_get() -> Option<&'static Self>

Source

pub(crate) fn get( debug_support: bool, profiling_support: bool, simple_perf: bool, ) -> Result<&'static Self>

Source

pub(crate) fn create_jit_dylib(&self) -> JITDylibRef

Creates a fresh JITDylib for a compiler.

Source

pub(crate) fn remove_jit_dylib(&self, jd: JITDylibRef)

Removes a JITDylib from the ExecutionSession, freeing all its resources.

Source

pub(crate) fn define_builtins(&self, symbols: &[(CString, usize)])

Defines absolute symbols in the shared builtins JITDylib, skipping any that are already defined.

Source

pub(crate) fn gc(&self)

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 80 bytes