Documentation

Miri.Interpreter.VTable

Runtime symbolic-vtable rules from pinned interpret/traits.rs and memory.rs. The selected tree has no interpret/vtable.rs. Global allocation identity, compiler predicates and function ABI checking are required leaves.

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
        Instances For
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            Instances For
              structure Miri.Interpreter.VTableHooks (P S C F ABI : Type) :
              Instances For

                Source symbolic reads separated from reservation and virtual calls, so machine-level dynamic layout needs no placeholder operational dictionary.

                Instances For
                  Equations
                  Instances For
                    def Miri.Interpreter.VTable.checkForTypeRead {P S C : Type} (h : VTableReadHooks P S C) (choice : C) (actual expected : Nat) :

                    Source ignores auto traits, sorts by compiler stable comparison, removes identical predicates, then normalizes each paired predicate before equality.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      def Miri.Interpreter.VTable.getPtrVTableTypeRead {P S C : Type} (h : VTableReadHooks P S C) (choice : C) (ptr : Memory.Pointer (Option P)) (expectedTrait : Option Nat) :
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        def Miri.Interpreter.VTable.getSizeAndAlignRead {P S C : Type} (h : VTableReadHooks P S C) (choice : C) (ptr : Memory.Pointer (Option P)) (expectedTrait : Option Nat) :

                        The interpreter consults the symbolic VTable allocation's type and layout; it does not trust or load the raw size/alignment words of arbitrary memory.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          def Miri.Interpreter.VTable.checkForType {P S C F A : Type} (h : VTableHooks P S C F A) (choice : C) (actual expected : Nat) :
                          Equations
                          Instances For
                            def Miri.Interpreter.VTable.getPtrVTableType {P S C F A : Type} (h : VTableHooks P S C F A) (choice : C) (ptr : Memory.Pointer (Option P)) (expectedTrait : Option Nat) :
                            Equations
                            Instances For
                              def Miri.Interpreter.VTable.getSizeAndAlign {P S C F A : Type} (h : VTableHooks P S C F A) (choice : C) (ptr : Memory.Pointer (Option P)) (expectedTrait : Option Nat) :
                              Equations
                              Instances For
                                def Miri.Interpreter.VTable.getPointer {P S C F A : Type} (h : VTableHooks P S C F A) (choice : C) (ty : MIR.TyId) (dynType : Nat) :
                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  def Miri.Interpreter.VTable.getPtrFn {P S C F A : Type} (h : VTableHooks P S C F A) (choice : C) (ptr : Memory.Pointer (Option P)) :

                                  This resolves allocation identity only, as memory.rs::get_ptr_fn does. Calling it requires ABI/type validation at the actual Call pipeline stage.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    def Miri.Interpreter.VTable.getCallableFunction {P S C F A : Type} (h : VTableHooks P S C F A) (validateABI : C → F → A → RvalueM S Unit) (choice : C) (ptr : Memory.Pointer (Option P)) (expectedABI : A) :
                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      def Miri.Interpreter.VTable.getMethod {P S C F A : Type} (h : VTableHooks P S C F A) (validateABI : C → F → A → RvalueM S Unit) (choice : C) (ptr : Memory.Pointer (Option P)) (expectedTrait : Nat) (principal : Option Nat) (index : Nat) (definition : MIR.DefId) (virtualInstance : F) (expectedABI : A) :

                                      Explicit checked utility for virtual method resolution. This extra ABI validation is caller-selected; production call.rs validates at frame initialization. Wrong/vacant/header/supertrait entries are UB, never callable functions.

                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        def Miri.Interpreter.VTable.unpackDynTrait {P S C F A : Type} [Memory.PointerProvenance P] (h : VTableHooks P S C F A) (choice : C) (op : OpTy P) (expectedTrait : Nat) :

                                        Source unpack_dyn_trait operates only on an indirect dynamic place, then changes its layout at zero wrapping offset while clearing the metadata.

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          def Miri.Interpreter.VTable.readMemoryScalar {K P E H PE : Type} [DecidableEq K] [DecidableEq P] [Memory.PointerProvenance P] (memory : Memory.MemoryState P E K) (state : H) (place : MemPlace P) (layout : ABI.TyAndLayout MIR.TyId) (runtime : ABI.RuntimeTargetDataLayout) (ghostMode : Bool) (globalKind : Option K) (globalHooks : Memory.GlobalAllocationHooks P E K H) (accessHooks : Memory.AllocationAccessHooks P E K H PE) (dynamicLayout : DynamicLayoutResolver P E K H) :

                                          When a consumer actually loads a scalar field, retain the existing typed memory-read pipeline and all access/provenance hooks. Symbolic size/alignment lookup above deliberately does not call this helper.

                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          Instances For