Pinned interpret/discriminant.rs pipelines. Field access, compiler queries
and CTFE pointer-nullability remain explicit effectful dependencies.
- runtimeTarget : ABI.RuntimeTargetDataLayout
- discriminantLayout : C → MIR.TyId → RvalueM S (ABI.TyAndLayout MIR.TyId)
- tagLayout : C → ABI.Scalar → RvalueM S (ABI.TyAndLayout MIR.TyId)
- readImmediate : C → OpTy Prov → RvalueM S (RvalueImmTy Prov)
- destLayout : V → ABI.TyAndLayout MIR.TyId
- writeScalar : C → Memory.Scalar Prov → V → RvalueM S Unit
- scalarMayBeNull : C → Memory.Scalar Prov → RvalueM S Bool
Instances For
def
Miri.Interpreter.Discriminant.discriminantForVariant
{P S C V : Type}
(h : DiscriminantHooks P S C V)
(choice : C)
(ty : MIR.TyId)
(variant : Nat)
:
RvalueM S (RvalueImmTy P)
User-visible discriminants differ from both tag bits and declaration indices. Types without compiler discriminants have only discriminant/index zero.
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Miri.Interpreter.Discriminant.tagForVariant
{P S C V : Type}
[Memory.PointerProvenance P]
(h : DiscriminantHooks P S C V)
(choice : C)
(layout : ABI.TyAndLayout MIR.TyId)
(variant : Nat)
:
RvalueM S (Option (Memory.ScalarInt × Nat))
Source tag_for_variant: uninhabited variants fail before all tag queries.
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Miri.Interpreter.Discriminant.readDiscriminant
{P S C V : Type}
[Memory.PointerProvenance P]
(h : DiscriminantHooks P S C V)
(choice : C)
(op : OpTy P)
:
Read the discriminant without assuming that an enum's wrapping range is a complete set of declared tags. Pointer niches retain the CTFE nullability hook.
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Miri.Interpreter.Discriminant.writeDiscriminant
{P S C V : Type}
[Memory.PointerProvenance P]
(h : DiscriminantHooks P S C V)
(choice : C)
(variant : Nat)
(dest : V)
:
Equations
- One or more equations did not get rendered due to their size.