Source-shaped operand evaluation. Compiler normalization, projection, and machine policy are mandatory contracts, never default successful operations.
Instances For
One-way projection for byte/ABI memory operations; canonical operands retain full compiler type identity and layout.
Equations
Instances For
- stack (error : StackError) : LocalAccessError
- memory (error : MemoryOperandError) : LocalAccessError
- projection (error : ProjectionError) : LocalAccessError
- unsizedImmediate : LocalAccessError
- resolver (message : String) : LocalAccessError
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.stack a) (Miri.Interpreter.LocalAccessError.stack b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.stack error) (Miri.Interpreter.LocalAccessError.memory error_1) = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.stack error) (Miri.Interpreter.LocalAccessError.projection error_1) = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.stack error) Miri.Interpreter.LocalAccessError.unsizedImmediate = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.stack error) (Miri.Interpreter.LocalAccessError.resolver message) = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.memory error) (Miri.Interpreter.LocalAccessError.stack error_1) = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.memory a) (Miri.Interpreter.LocalAccessError.memory b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.memory error) (Miri.Interpreter.LocalAccessError.projection error_1) = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.memory error) Miri.Interpreter.LocalAccessError.unsizedImmediate = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.memory error) (Miri.Interpreter.LocalAccessError.resolver message) = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.projection error) (Miri.Interpreter.LocalAccessError.stack error_1) = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.projection error) (Miri.Interpreter.LocalAccessError.memory error_1) = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.projection error) Miri.Interpreter.LocalAccessError.unsizedImmediate = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.projection error) (Miri.Interpreter.LocalAccessError.resolver message) = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq Miri.Interpreter.LocalAccessError.unsizedImmediate (Miri.Interpreter.LocalAccessError.stack error) = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq Miri.Interpreter.LocalAccessError.unsizedImmediate (Miri.Interpreter.LocalAccessError.memory error) = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq Miri.Interpreter.LocalAccessError.unsizedImmediate (Miri.Interpreter.LocalAccessError.projection error) = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq Miri.Interpreter.LocalAccessError.unsizedImmediate Miri.Interpreter.LocalAccessError.unsizedImmediate = isTrue ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq Miri.Interpreter.LocalAccessError.unsizedImmediate (Miri.Interpreter.LocalAccessError.resolver message) = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.resolver message) (Miri.Interpreter.LocalAccessError.stack error) = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.resolver message) (Miri.Interpreter.LocalAccessError.memory error) = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.resolver message) (Miri.Interpreter.LocalAccessError.projection error) = isFalse ⋯
- Miri.Interpreter.instDecidableEqLocalAccessError.decEq (Miri.Interpreter.LocalAccessError.resolver message) Miri.Interpreter.LocalAccessError.unsizedImmediate = isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- frame : Frame Prov LocalLayout Extra
- state : State
- outcome : Except LocalAccessError α
Instances For
layout implements from_known_layout, normalization and layout lookup.
project implements rustc Projectable including provenance and metadata.
checkPlaceType performs the debug-mode normalized MIR type sanity check when
that mode is enabled, and must explicitly implement the disabled-mode policy.
Constant evaluation includes instantiation, normalization and failure handling.
- layout : Frame Prov LocalLayout Extra → State → MIR.LocalId → Option LocalLayout → LocalAccessResult Prov Extra State LocalLayout
- validationInProgress : State → Bool
- afterLocalRead : Frame Prov LocalLayout Extra → State → MIR.LocalId → LocalAccessResult Prov Extra State Unit
- project : Frame Prov LocalLayout Extra → State → TypedOperand Prov → MIR.ProjectionElem → LocalAccessResult Prov Extra State (TypedOperand Prov)
- checkPlaceType : Frame Prov LocalLayout Extra → State → MIR.Place → TypedOperand Prov → LocalAccessResult Prov Extra State Unit
- runtimeChecks : Frame Prov LocalLayout Extra → State → MIR.RuntimeChecks → LocalAccessResult Prov Extra State (TypedOperand Prov)
- constant : Frame Prov LocalLayout Extra → State → MIR.ConstOperand → Option LocalLayout → LocalAccessResult Prov Extra State (TypedOperand Prov)
Instances For
Use the executable canonical projector rather than a second projection IR.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pinned operand.rs local_to_op: layout cache precedes dead-localId checking; only immediate reads outside validation invoke the machine read hook.
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
Copy and Move deliberately share the source branch. Pinned rustc's FIXME leaves move invalidation unimplemented; this port does not invent it.
Equations
- Miri.Interpreter.evalOperand hooks frame state (Miri.MIR.Operand.Copy place) known = Miri.Interpreter.evalPlaceToOp hooks frame state place known
- Miri.Interpreter.evalOperand hooks frame state (Miri.MIR.Operand.Move place) known = Miri.Interpreter.evalPlaceToOp hooks frame state place known
- Miri.Interpreter.evalOperand hooks frame state (Miri.MIR.Operand.RuntimeChecks check) known = hooks.runtimeChecks frame state check
- Miri.Interpreter.evalOperand hooks frame state (Miri.MIR.Operand.Constant constant) known = hooks.constant frame state constant known
Instances For
Connected immediate-read context. Allocation/global/access hooks are the existing memory port's required inputs.
- runtime : ABI.RuntimeTargetDataLayout
- ghostMode : Bool
- globalKind : Option Kind
- globalHooks : Memory.GlobalAllocationHooks Prov MemExtra Kind HookState
- accessHooks : Memory.AllocationAccessHooks Prov MemExtra Kind HookState ProvExtra
- dynamicLayout : DynamicLayoutResolver Prov MemExtra Kind HookState
Instances For
The actual MemoryOperand.readImmediate path, retaining memory, hook state,
and touched allocation even if decoding or access fails.
Equations
- One or more equations did not get rendered due to their size.
Instances For
- memory : Memory.MemoryState Prov MemExtra Kind
- hooks : HookState
- touched : Option (Memory.AllocationAccessRef Prov MemExtra)
Instances For
Evaluate MIR syntax and read its immediate using the existing allocation semantics. Local hooks operate on this same memory and machine state.
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
Required post-write machine and ABI-debug policy, with no silent policy.
- validationInProgress : State → Bool
- afterLocalWrite : Frame Prov LocalLayout Extra → State → MIR.LocalId → LocalAccessResult Prov Extra State Unit
- checkImmediateAbi : Frame Prov LocalLayout Extra → State → Immediate Prov → LocalLayout → LocalAccessResult Prov Extra State Unit
Instances For
Immediate-only whole-local branch, reusable without inventing an allocation context. Callers must have selected an immediate-backed destination.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Whole-local immediate write branch from place.rs. The replacement precedes both the machine hook and debug ABI check, so failures retain the new value. Indirect locals use the existing memory writer, preserving metadata.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Concrete raw-reader adapter for the copy pipeline's fast-path probe.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Required source-copy dependencies. hasPadding includes the wide-pointer
special case and scalar-size queries. copyMemory must perform nonoverlapping
mem_copy before source then destination alignment checks, retaining effects.
validate performs the source/destination typed passes, provenance/padding
reset and recursive-validity policy from copy_op_inner.
- destinationLayout : Dest → LocalLayout
- compatible : LocalLayout → LocalLayout → Except LocalAccessError Bool
- hasPadding : LocalLayout → Except LocalAccessError Bool
- readRaw : Frame Prov LocalLayout Extra → State → TypedOperand Prov → LocalAccessResult Prov Extra State (ImmediateOrPlace Prov)
- writeImmediate : Frame Prov LocalLayout Extra → State → Dest → Immediate Prov → LocalAccessResult Prov Extra State Unit
- forceDestination : Frame Prov LocalLayout Extra → State → Dest → LocalAccessResult Prov Extra State (MemoryOperandPlace Prov)
- writeTransmuted : Frame Prov LocalLayout Extra → State → MemoryOperandPlace Prov → LocalLayout → Immediate Prov → LocalAccessResult Prov Extra State Unit
- copyMemory : Frame Prov LocalLayout Extra → State → MemoryOperandPlace Prov → MemoryOperandPlace Prov → LocalAccessResult Prov Extra State Unit
- validate : Frame Prov LocalLayout Extra → State → LocalLayout → Dest → LocalAccessResult Prov Extra State Unit
Instances For
Pinned place.rs copy_op_no_validate decision pipeline. Every slow-path operation has an explicit contract; no missing memory operation succeeds.
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.