Documentation

Miri.Interpreter.Operand

Stored operands and the low-level LocalState operations from pinned operand.rs, place.rs, and stack.rs. Memory access and machine hooks are required at higher-level accesses; the ghost accessor below never substitutes for a Rust read.

structure Miri.Interpreter.MemPlace (Prov : Type) :
Instances For
    def Miri.Interpreter.instDecidableEqMemPlace.decEq {Prov✝ : Type} [DecidableEq Prov✝] (x✝ x✝¹ : MemPlace Prov✝) :
    Decidable (x✝ = x✝¹)
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[instance_reducible]
      instance Miri.Interpreter.instReprMemPlace {Prov✝ : Type} [Repr Prov✝] :
      Repr (MemPlace Prov✝)
      Equations
      def Miri.Interpreter.instReprMemPlace.repr {Prov✝ : Type} [Repr Prov✝] :
      MemPlace Prov✝ → Nat → Std.Format
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        inductive Miri.Interpreter.Operand (Prov : Type) :
        Instances For
          @[instance_reducible]
          instance Miri.Interpreter.instReprOperand {Prov✝ : Type} [Repr Prov✝] :
          Repr (Operand Prov✝)
          Equations
          def Miri.Interpreter.instReprOperand.repr {Prov✝ : Type} [Repr Prov✝] :
          Operand Prov✝ → Nat → Std.Format
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            Instances For
              def Miri.Interpreter.instReprLocalValue.repr {Prov✝ : Type} [Repr Prov✝] :
              LocalValue Prov✝ → Nat → Std.Format
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                structure Miri.Interpreter.LocalState (Prov Layout : Type) :

                Layout will be the canonical imported TyAndLayout representation at the integrated interpreter boundary. Its cached value is retained unchanged by the selected source operations.

                Instances For
                  def Miri.Interpreter.instDecidableEqLocalState.decEq {Prov✝ Layout✝ : Type} [DecidableEq Prov✝] [DecidableEq Layout✝] (x✝ x✝¹ : LocalState Prov✝ Layout✝) :
                  Decidable (x✝ = x✝¹)
                  Equations
                  Instances For
                    @[instance_reducible]
                    instance Miri.Interpreter.instReprLocalState {Prov✝ Layout✝ : Type} [Repr Prov✝] [Repr Layout✝] :
                    Repr (LocalState Prov✝ Layout✝)
                    Equations
                    def Miri.Interpreter.instReprLocalState.repr {Prov✝ Layout✝ : Type} [Repr Prov✝] [Repr Layout✝] :
                    LocalState Prov✝ Layout✝ → Nat → Std.Format
                    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
                        Instances For
                          @[instance_reducible]
                          Equations
                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            Instances For
                              Equations
                              Instances For
                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  def Miri.Interpreter.MemPlace.mapProvenance {Prov : Type} (self : MemPlace Prov) (f : Prov → Prov) :
                                  Equations
                                  Instances For
                                    Equations
                                    Instances For
                                      def Miri.Interpreter.MemPlace.offsetWithMeta {Prov ProvExtra : Type} (self : MemPlace Prov) (offset : ABI.Size) (mode : OffsetMode) (metadata : MemPlaceMeta Prov) (target : Memory.PointerArithmetic) (resolve : Memory.PointerResolver Prov ProvExtra) (lookup : Memory.LiveAllocationLookup) :

                                      Source MemPlace::offset_with_meta_: metadata cannot be added to a thin place; inbounds mode checks the signed conversion and allocation bounds, while wrapping mode uses the target-width pointer operation directly.

                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        theorem Miri.Interpreter.MemPlace.mapProvenance_metadata {Prov : Type} (self : MemPlace Prov) (f : Prov → Prov) :

                                        Source ghost read for provenance visiting. It does not count as a read in the abstract machine and performs no borrow/race hooks.

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          def Miri.Interpreter.LocalState.modify {Prov Layout : Type} (self : LocalState Prov Layout) (f : Operand Prov → Operand Prov) :

                                          Functional form of source access_mut: only a live operand is exposed for mutation. It is still the caller's job to perform the machine access hook.

                                          Equations
                                          Instances For
                                            theorem Miri.Interpreter.LocalState.dead_access {Layout Prov : Type} (layout : Option Layout) :
                                            theorem Miri.Interpreter.LocalState.access_success {Prov Layout : Type} (self : LocalState Prov Layout) (operand : Operand Prov) (success : self.access = Except.ok operand) :
                                            self.value = LocalValue.live operand
                                            theorem Miri.Interpreter.LocalState.dead_modify {Layout Prov : Type} (layout : Option Layout) (f : Operand Prov → Operand Prov) :