Executable projection rules from pinned rustc interpret/projection.rs.
Compiler queries and machine-owned operations are required fallible callbacks.
No projection reads memory, validates a discriminant, or erases provenance.
- op : Operand Prov
- layout : ABI.TyAndLayout MIR.TyId
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
- machineError (error : StepError) : ProjectionError
- obligation (operation : String) : ProjectionError
- invariant (message : String) : ProjectionError
- bounds (len index : UInt64) : ProjectionError
- pointerArithOverflow : ProjectionError
- layout (reason : ABI.LayoutError) : ProjectionError
- size (reason : ABI.SizeError) : ProjectionError
- align (reason : ABI.AlignError) : ProjectionError
- offset (reason : MemPlaceOffsetError) : ProjectionError
- immediate (reason : ImmediateError) : ProjectionError
- scalar (reason : Memory.ScalarError) : ProjectionError
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Compiler/machine dependencies are explicit, including ABI checking of
immediates and dynamic alignment computation (which may execute custom DST code).
subsliceLayout must construct the array type or retain the slice type and run
layout_of; sliceMetadata must use the target usize representation.
- target : ABI.TargetDataLayout
- maxSizeOfVal : ABI.Size
- isSliceOrStr : MIR.TyId → Except ProjectionError Bool
- field : ABI.TyAndLayout MIR.TyId → Nat → Except ProjectionError (ABI.TyAndLayout MIR.TyId)
- variant : ABI.TyAndLayout MIR.TyId → Nat → Except ProjectionError (ABI.TyAndLayout MIR.TyId)
- dynamicAlign : MemPlaceMeta Prov → ABI.TyAndLayout MIR.TyId → Except ProjectionError (Option ABI.Align)
- packedAlign : MIR.TyId → Except ProjectionError (Option ABI.Align)
- immediateOffset : Immediate Prov → ABI.TyAndLayout MIR.TyId → ABI.Size → ABI.TyAndLayout MIR.TyId → Except ProjectionError (Immediate Prov)
- memoryOffset : MemPlace Prov → ABI.Size → OffsetMode → MemPlaceMeta Prov → Except ProjectionError (MemPlace Prov)
- subsliceLayout : ABI.TyAndLayout MIR.TyId → UInt64 → Except ProjectionError (ABI.TyAndLayout MIR.TyId × MemPlaceMeta Prov)
- layoutOf : MIR.TyId → Except ProjectionError (ABI.TyAndLayout MIR.TyId)
- deref : OpTy Prov → Except ProjectionError (OpTy Prov)
- localIndex : MIR.LocalId → Except ProjectionError UInt64
Instances For
The actual memory adapter delegates to the existing pointer arithmetic semantics, retaining allocation identity, provenance and misalignment.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Source ImmTy::offset_. ABI validation is required before extraction and
on the resulting immediate, even for uninitialized/uninhabited/ZST values.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- self.metadata = match self.op with | Miri.Interpreter.Operand.indirect place => place.metadata | Miri.Interpreter.Operand.immediate value => Miri.Interpreter.MemPlaceMeta.none
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Consume the existing source MIR projection syntax; oversized imported Nat indices fail explicitly rather than silently truncating to upstream u64.
Equations
- One or more equations did not get rendered due to their size.
- Miri.Interpreter.project cx base (Miri.MIR.ProjectionElem.Field field ty) = Miri.Interpreter.projectField cx base field
- Miri.Interpreter.project cx base (Miri.MIR.ProjectionElem.Downcast name variant) = Miri.Interpreter.projectDowncast cx base variant
- Miri.Interpreter.project cx base Miri.MIR.ProjectionElem.Deref = cx.deref base
- Miri.Interpreter.project cx base (Miri.MIR.ProjectionElem.Index localId) = do let __do_lift ← cx.localIndex localId Miri.Interpreter.projectIndex cx base __do_lift
- Miri.Interpreter.project cx base (Miri.MIR.ProjectionElem.UnwrapUnsafeBinder ty) = do let __do_lift ← cx.layoutOf ty Miri.Interpreter.OpTy.transmute cx base __do_lift
- Miri.Interpreter.project cx base (Miri.MIR.ProjectionElem.OpaqueCast ty) = throw (Miri.Interpreter.ProjectionError.invariant "OpaqueCast after borrowck")
- Miri.Interpreter.project cx base Miri.MIR.ProjectionElem.PhantomDeref = throw (Miri.Interpreter.ProjectionError.invariant "PhantomDeref after borrowck")