Documentation

Miri.Interpreter.LocalAccess

Source-shaped operand evaluation. Compiler normalization, projection, and machine policy are mandatory contracts, never default successful operations.

@[reducible, inline]
Equations
Instances For

    One-way projection for byte/ABI memory operations; canonical operands retain full compiler type identity and layout.

    Equations
    Instances For
      Instances For
        Equations
        Instances For
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            structure Miri.Interpreter.LocalAccessResult (Prov Extra State α : Type) :
            Instances For
              structure Miri.Interpreter.LocalAccessHooks (Prov Extra State : Type) :

              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.

              Instances For
                def Miri.Interpreter.localProjectionHook {Prov Extra State : Type} [Memory.PointerProvenance Prov] (cx : ProjectionCx Prov) (frame : Frame Prov LocalLayout Extra) (state : State) (op : TypedOperand Prov) (elem : MIR.ProjectionElem) :
                LocalAccessResult Prov Extra State (TypedOperand Prov)

                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
                  def Miri.Interpreter.localToOp {Prov Extra State : Type} (hooks : LocalAccessHooks Prov Extra State) (frame : Frame Prov LocalLayout Extra) (state : State) (localId : MIR.LocalId) (known : Option LocalLayout) :
                  LocalAccessResult Prov Extra State (TypedOperand Prov)

                  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
                    def Miri.Interpreter.evalPlaceToOp {Prov Extra State : Type} (hooks : LocalAccessHooks Prov Extra State) (frame : Frame Prov LocalLayout Extra) (state : State) (place : MIR.Place) (known : Option LocalLayout) :
                    LocalAccessResult Prov Extra State (TypedOperand Prov)
                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      def Miri.Interpreter.evalOperand {Prov Extra State : Type} (hooks : LocalAccessHooks Prov Extra State) (frame : Frame Prov LocalLayout Extra) (state : State) (operand : MIR.Operand) (known : Option LocalLayout) :
                      LocalAccessResult Prov Extra State (TypedOperand Prov)

                      Copy and Move deliberately share the source branch. Pinned rustc's FIXME leaves move invalidation unimplemented; this port does not invent it.

                      Equations
                      Instances For
                        structure Miri.Interpreter.LocalReadContext (Prov MemExtra Kind HookState ProvExtra : Type) :

                        Connected immediate-read context. Allocation/global/access hooks are the existing memory port's required inputs.

                        Instances For
                          def Miri.Interpreter.readTypedImmediate {Kind Prov MemExtra HookState ProvExtra : Type} [DecidableEq Kind] [DecidableEq Prov] [Memory.PointerProvenance Prov] (context : LocalReadContext Prov MemExtra Kind HookState ProvExtra) (memory : Memory.MemoryState Prov MemExtra Kind) (state : HookState) (op : TypedOperand Prov) :
                          MemoryOperandResult Prov MemExtra Kind HookState (ImmediateValue Prov)

                          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
                            structure Miri.Interpreter.LocalReadState (Prov MemExtra Kind HookState : Type) :
                            Instances For
                              def Miri.Interpreter.evalOperandImmediate {Kind Prov MemExtra HookState ProvExtra Extra : Type} [DecidableEq Kind] [DecidableEq Prov] [Memory.PointerProvenance Prov] (context : LocalReadContext Prov MemExtra Kind HookState ProvExtra) (hooks : LocalAccessHooks Prov Extra (LocalReadState Prov MemExtra Kind HookState)) (frame : Frame Prov LocalLayout Extra) (state : LocalReadState Prov MemExtra Kind HookState) (operand : MIR.Operand) (known : Option LocalLayout) :
                              LocalAccessResult Prov Extra (LocalReadState Prov MemExtra Kind HookState) (ImmediateValue Prov)

                              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
                                def Miri.Interpreter.readLocalImmediate {Kind Prov MemExtra HookState ProvExtra Extra : Type} [DecidableEq Kind] [DecidableEq Prov] [Memory.PointerProvenance Prov] (context : LocalReadContext Prov MemExtra Kind HookState ProvExtra) (hooks : LocalAccessHooks Prov Extra (LocalReadState Prov MemExtra Kind HookState)) (frame : Frame Prov LocalLayout Extra) (state : LocalReadState Prov MemExtra Kind HookState) (localId : MIR.LocalId) :
                                LocalAccessResult Prov Extra (LocalReadState Prov MemExtra Kind HookState) (ImmediateValue Prov)
                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  structure Miri.Interpreter.LocalWriteHooks (Prov Extra State : Type) :

                                  Required post-write machine and ABI-debug policy, with no silent policy.

                                  Instances For
                                    def Miri.Interpreter.writeImmediateLocalBranch {Prov Extra State : Type} (hooks : LocalWriteHooks Prov Extra State) (frame : Frame Prov LocalLayout Extra) (state : State) (localId : MIR.LocalId) (layout : LocalLayout) (value : Immediate Prov) :
                                    LocalAccessResult Prov Extra State Unit

                                    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
                                      def Miri.Interpreter.writeLocalImmediateNoValidate {Kind Prov MemExtra HookState ProvExtra Extra : Type} [DecidableEq Kind] [DecidableEq Prov] [Memory.PointerProvenance Prov] (context : LocalReadContext Prov MemExtra Kind HookState ProvExtra) (willLaterValidate : MemoryOperandLayout → Bool) (hooks : LocalWriteHooks Prov Extra (LocalReadState Prov MemExtra Kind HookState)) (frame : Frame Prov LocalLayout Extra) (state : LocalReadState Prov MemExtra Kind HookState) (localId : MIR.LocalId) (layout : LocalLayout) (value : Immediate Prov) :
                                      LocalAccessResult Prov Extra (LocalReadState Prov MemExtra Kind HookState) Unit

                                      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
                                        def Miri.Interpreter.localCopyReadRaw {Kind Prov MemExtra HookState ProvExtra Extra : Type} [DecidableEq Kind] [DecidableEq Prov] [Memory.PointerProvenance Prov] (context : LocalReadContext Prov MemExtra Kind HookState ProvExtra) (frame : Frame Prov LocalLayout Extra) (state : LocalReadState Prov MemExtra Kind HookState) (source : TypedOperand Prov) :
                                        LocalAccessResult Prov Extra (LocalReadState Prov MemExtra Kind HookState) (ImmediateOrPlace Prov)

                                        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
                                          structure Miri.Interpreter.LocalCopyHooks (Prov Extra State Dest : Type) :

                                          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.

                                          Instances For
                                            def Miri.Interpreter.copyOperandNoValidate {Prov Extra State Dest : Type} (hooks : LocalCopyHooks Prov Extra State Dest) (frame : Frame Prov LocalLayout Extra) (state : State) (source : TypedOperand Prov) (dest : Dest) (allowTransmute : Bool) :
                                            LocalAccessResult Prov Extra State Unit

                                            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
                                              def Miri.Interpreter.copyOperand {Prov Extra State Dest : Type} (hooks : LocalCopyHooks Prov Extra State Dest) (frame : Frame Prov LocalLayout Extra) (state : State) (source : TypedOperand Prov) (dest : Dest) (allowTransmute : Bool) :
                                              LocalAccessResult Prov Extra State Unit
                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              Instances For
                                                theorem Miri.Interpreter.copy_move_same {Prov Extra State : Type} (hooks : LocalAccessHooks Prov Extra State) (frame : Frame Prov LocalLayout Extra) (state : State) (place : MIR.Place) (known : Option LocalLayout) :
                                                evalOperand hooks frame state (MIR.Operand.Copy place) known = evalOperand hooks frame state (MIR.Operand.Move place) known