Frame-local vector clocks and their transfer into addressable memory from
pinned src/concurrency/data_race.rs:1303–1404. Diagnostic spans are omitted;
timestamp times and packed read kinds are preserved.
- write : VTimestamp
- writeType : NaWriteType
- read : VTimestamp
Instances For
@[instance_reducible]
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
- localClocks : Array (Nat × LocalClocks)
Instances For
@[instance_reducible]
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- frame.get localId = (Option.map Prod.snd (Array.find? (fun (entry : Nat × Miri.Concurrency.LocalRace.LocalClocks) => entry.fst == localId) frame.localClocks)).getD { }
Instances For
def
Miri.Concurrency.LocalRace.FrameState.set
(frame : FrameState)
(localId : Nat)
(clocks : LocalClocks)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- frame.remove localId = { localClocks := Array.filter (fun (entry : Nat × Miri.Concurrency.LocalRace.LocalClocks) => entry.fst != localId) frame.localClocks }
Instances For
- global (error : GlobalStateError) : Error
- clock (error : ClockError) : Error
- memory (error : DataRaceResult) : Error
- allocationWriterMismatch (expected actual : VectorIdx) : Error
Instances For
@[instance_reducible]
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
- frame : FrameState
- global : GlobalState
Instances For
def
Miri.Concurrency.LocalRace.localWrite
(frame : FrameState)
(global : GlobalState)
(threads : ThreadManager)
(localId : Nat)
(storageLive : Bool)
:
Source local_write only records clocks when race_detecting is true. StorageLive resets the previous read timestamp; ordinary writes retain it.
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Miri.Concurrency.LocalRace.localRead
(frame : FrameState)
(global : GlobalState)
(threads : ThreadManager)
(localId : Nat)
:
Source local_read first sets the active timestamp's packed read type, then saves that full timestamp into the local map, without incrementing time.
Equations
- One or more equations did not get rendered due to their size.
Instances For
- frame : FrameState
- allocation : VClockAlloc
Instances For
def
Miri.Concurrency.LocalRace.localMovedToMemory
(frame : FrameState)
(global : GlobalState)
(threads : ThreadManager)
(localId : Nat)
(allocation : VClockAlloc)
:
Transfer historical local times, not allocation/materialization time. Each byte's atomic metadata is retained. The local map entry is removed before any assertion; earlier bytes remain updated on a later invariant failure.
Equations
- One or more equations did not get rendered due to their size.