pub enum JitOptimization {
Show 14 variants
CopyPropagation,
ArrayReadModifyWrite,
TwoBufferLoad,
FusedMultiplyAdd,
ConditionalSwap,
Swap,
AffineIndex,
StringAppendInt,
RegisterAllocatedFunction,
RegisterAllocatedRegion,
RegisterAllocatedPreciseRegion,
PinnedRegisters,
FusedSelfCall,
RotateInstruction,
}Expand description
Native-only JIT optimizations which run after LOGOS bytecode has been
produced. These cannot honestly share an Opt
bit with the Rust emitter: they transform JIT micro-ops, so they have their
own named trace and are reported alongside the shared compiler trace.
Variants§
CopyPropagation
Micro-op copy propagation and constant CSE.
ArrayReadModifyWrite
Array load/ALU/store collapsed to one read-modify-write operation.
TwoBufferLoad
Two array loads plus an integer operation collapsed to one operation.
FusedMultiplyAdd
Floating multiply plus add collapsed to FMA.
ConditionalSwap
A branchy compare-and-swap collapsed to one operation.
Swap
An unconditional array exchange collapsed to one operation.
AffineIndex
Affine index arithmetic folded into an array load.
StringAppendInt
Mutable Text += Int lowered to allocation-free decimal append.
RegisterAllocatedFunction
A function emitted by the contiguous register allocator.
RegisterAllocatedRegion
A loop region emitted by the contiguous register allocator.
RegisterAllocatedPreciseRegion
A precise-deopt region emitted by the contiguous register allocator.
PinnedRegisters
A successful stencil compile with hot values pinned in registers.
FusedSelfCall
Self-call argument moves fused into one contiguous copy.
RotateInstruction
Word rotate lowered to one native rol/ror instruction.
Implementations§
Trait Implementations§
Source§impl Clone for JitOptimization
impl Clone for JitOptimization
Source§fn clone(&self) -> JitOptimization
fn clone(&self) -> JitOptimization
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for JitOptimization
impl Debug for JitOptimization
Source§impl Ord for JitOptimization
impl Ord for JitOptimization
Source§fn cmp(&self, other: &JitOptimization) -> Ordering
fn cmp(&self, other: &JitOptimization) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for JitOptimization
impl PartialEq for JitOptimization
Source§impl PartialOrd for JitOptimization
impl PartialOrd for JitOptimization
impl Copy for JitOptimization
impl Eq for JitOptimization
impl StructuralPartialEq for JitOptimization
Auto Trait Implementations§
impl Freeze for JitOptimization
impl RefUnwindSafe for JitOptimization
impl Send for JitOptimization
impl Sync for JitOptimization
impl Unpin for JitOptimization
impl UnsafeUnpin for JitOptimization
impl UnwindSafe for JitOptimization
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,
§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.