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: JITDylibRefShared 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 JitMemoryCountersLive JIT memory counters, updated by the C++ MemoryUsagePlugin.
jit: LLJITImplementations§
Source§impl GlobalOrcJit
impl GlobalOrcJit
pub(crate) fn global() -> &'static OnceLock<Result<Self, String>>
pub(crate) fn try_get() -> Option<&'static Self>
pub(crate) fn get( debug_support: bool, profiling_support: bool, simple_perf: bool, ) -> Result<&'static Self>
Sourcepub(crate) fn create_jit_dylib(&self) -> JITDylibRef
pub(crate) fn create_jit_dylib(&self) -> JITDylibRef
Creates a fresh JITDylib for a compiler.
Sourcepub(crate) fn remove_jit_dylib(&self, jd: JITDylibRef)
pub(crate) fn remove_jit_dylib(&self, jd: JITDylibRef)
Removes a JITDylib from the ExecutionSession, freeing all its resources.
Sourcepub(crate) fn define_builtins(&self, symbols: &[(CString, usize)])
pub(crate) fn define_builtins(&self, symbols: &[(CString, usize)])
Defines absolute symbols in the shared builtins JITDylib, skipping any that are already defined.
pub(crate) fn gc(&self)
Auto Trait Implementations§
impl !Freeze for GlobalOrcJit
impl RefUnwindSafe for GlobalOrcJit
impl Send for GlobalOrcJit
impl Sync for GlobalOrcJit
impl Unpin for GlobalOrcJit
impl UnsafeUnpin for GlobalOrcJit
impl UnwindSafe for GlobalOrcJit
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
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