Canonical Place ↔ Miri machine access. Vector-clock and Tree Borrows rules are actual operations; address/global/weak-memory/synchronization policies are required leaves. Typed failures survive the legacy string memory-hook boundary.
Equations
Instances For
Equations
Instances For
Equations
- Miri.Interpreter.PlaceMachine.M K User A = Miri.Interpreter.MachineHooks.M K User A
Instances For
Equations
Instances For
Policies outside ordinary non-atomic VClock/Tree-Borrows access. Diagnostic runs before races; weakMemoryWrite after successful race write; syncAccess after successful Tree Borrows. Hooks may change User/external indices, not live bytes; the allocation-access layer owns byte/extra commits. Disabled policies must be chosen explicitly by the machine configuration.
- runtime : ABI.RuntimeTargetDataLayout
- ghostMode : Bool
- globalKind : Option K
- globalHooks : Memory.GlobalAllocationHooks Memory.Provenance TreeBorrows.BorrowTree K (AccessState K User)
- dynamicLayout : DynamicLayoutResolver Memory.Provenance TreeBorrows.BorrowTree K (AccessState K User)
- resolvePointer : Memory.MemoryState Memory.Provenance TreeBorrows.BorrowTree K → Memory.Pointer (Option Memory.Provenance) → Int → MachineM K User (Except UInt64 (Memory.ResolvedPointer Memory.ProvenanceExtra))
- beforeAllocationAccess : Memory.AllocId → MachineM K User Unit
- diagnostic : Bool → Memory.AllocId → Memory.AllocRange → MachineM K User Unit
- weakMemoryWrite : Memory.AllocId → Memory.AllocRange → MachineM K User Unit
- syncAccess : Bool → Memory.AllocId → Memory.AllocRange → MachineM K User Unit
- retainTouched : Machine K User → Option (Memory.AllocationAccessRef Memory.Provenance TreeBorrows.BorrowTree) → Machine K User
- memoryError : MemoryOperandError → StepError
Instances For
Source before_memory_read/write order, retaining the tree after access UB and prior clock/weak-memory effects on every failure.
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
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
Equations
- One or more equations did not get rendered due to their size.
Instances For
The canonical zero-sized unit write preserves the entire machine and stack. No allocation lookup, pointer resolution or permission transition is assumed. The layout and pointer-size premises concern compiler/target data only.
Source stack init_allocation: root borrow tree before allocation race state. Stack allocation time comes from the active thread; historical local clocks are transferred by afterLocalMovedToMemory later. Span-only diagnostic and weak-memory construction leaves remain explicit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
- maximumObjectSize : ABI.Size
- nativeStorage : Option (ABI.Size → ABI.Align → Memory.AllocInit → M K User (Except Memory.AllocError (Memory.Allocation Memory.Provenance)))
- nativeDrop : Option (Memory.Allocation Memory.Provenance → M K User Unit)
- diagnostic : Memory.AllocId → ABI.Size → ABI.Align → MachineM K User Unit
- allocationTail : Memory.AllocId → ABI.Size → ABI.Align → MachineM K User Unit
- adjustRootAddress : Memory.AllocId → Memory.BorTag → M K User (Memory.Pointer Memory.Provenance)
Actual address-map allocation with the existing root tag. This must not replace the tag or derive an absolute address from allocation identity.
Instances For
Actual uninitialized stack allocation, with root/tree/clock effects retained when a later root-address adjustment fails.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Typed stack allocation retains the source sized-layout check. Raw temporary buffers use allocateStackRaw directly and require no fabricated compiler type.
Equations
- One or more equations did not get rendered due to their size.
Instances For
- debugAssertions : Bool
- layout : C → MIR.LocalId → M K User LocalLayout
- projection : C → M K User (ProjectionCx Memory.Provenance)
- deref : C → RuntimePlace Memory.Provenance → Bool → M K User (RuntimePlace Memory.Provenance)
- checkPlaceType : C → MIR.Place → RuntimePlace Memory.Provenance → M K User Unit
- memoryOffset : C → MemPlace Memory.Provenance → ABI.Size → OffsetMode → MemPlaceMeta Memory.Provenance → M K User (MemPlace Memory.Provenance)
- debugAbiCheck : Immediate Memory.Provenance → LocalLayout → M K User Unit
- localSpan : MIR.Body → MIR.LocalId → M K User MIR.SpanRef
- enforceValidity : C → LocalLayout → M K User Bool
- validate : C → RuntimePlace Memory.Provenance → M K User Unit
- willValidateMemory : MemoryOperandLayout → Bool
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Source local read, with layout/cache resolution provided separately from unrelated compiler/place operations. The actual read event remains mandatory.
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
Equations
- One or more equations did not get rendered due to their size.
Instances For
Compiler/type/layout preparation remains fallible; the write-uninit stage is supplied by the actual typed memory writer below, including races and TB.
- preparePointerRetag : RvalueImmTy Memory.Provenance → MIR.TyId → TreeBorrows.RetagPolicy.RetagMode → M K User TreeBorrows.RetagPipeline.Request
- reconstructImmediate : RvalueImmTy Memory.Provenance → Option Memory.Provenance → M K User (RvalueImmTy Memory.Provenance)
- preparePlaceProtection : MPlaceTy Memory.Provenance → M K User TreeBorrows.RetagPipeline.Request
- ensureTreeExtra : Memory.AllocId → M K User Unit
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Bind canonical typed places and actual retag/race hooks to the existing rvalue interpreter. The supplied evaluator is normally PlaceDynamic.evalPlace; operand evaluation/projection, casts and compiler facts stay required in base. No unconditional retag is inserted on raw-pointer or integer copies: the source rvalue dispatcher chooses Default/TwoPhase/Raw/None and its retag trigger.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Internal stage composition for the fresh allocation's first whole write. The caller discharges diagnostic/weak/sync edges from the current raw machine.
An internal exact resolver equation lifted through the production bridge.
Commit a successful actual operand mutation through the production memory writer; every stack/user field outside memory is retained exactly.