Source provenance_gc.rs, machine.rs::VisitProvenance, thread.rs frame visitors. This collects provenance as ghost data: it performs no Rust memory read, initialization check, race access or retag. Missing user-state visitors remain required operations; arbitrary empty roots are not a closed interpreter.
- allocations : Array Memory.AllocId
Instances For
Equations
- One or more equations did not get rendered due to their size.
- roots.add (some id_2) none = { allocations := if roots.allocations.contains id_2 = true then roots.allocations else roots.allocations.push id_2, tags := roots.tags }
- roots.add none (some tag_2) = { allocations := roots.allocations, tags := if roots.tags.contains tag_2 = true then roots.tags else roots.tags.push tag_2 }
- roots.add none none = { allocations := roots.allocations, tags := roots.tags }
Instances For
Equations
- roots.provenance (Miri.Memory.Provenance.concrete id tag) = roots.add (some id) (some tag)
- roots.provenance Miri.Memory.Provenance.wildcard = roots
Instances For
Equations
- roots.pointer pointer = match pointer.provenance with | none => roots | some value => roots.provenance value
Instances For
Equations
- roots.strictPointer pointer = roots.provenance pointer.provenance
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- roots.immediate (Miri.Interpreter.Immediate.scalar value) = roots.scalar value
- roots.immediate (Miri.Interpreter.Immediate.scalarPair first second) = do let __do_lift ← roots.scalar first __do_lift.scalar second
- roots.immediate Miri.Interpreter.Immediate.uninit = Except.ok roots
Instances For
Equations
- roots.metadata (Miri.Interpreter.MemPlaceMeta.metadata value) = roots.scalar value
- roots.metadata Miri.Interpreter.MemPlaceMeta.none = Except.ok roots
Instances For
Equations
- roots.operand (Miri.Interpreter.Operand.immediate value) = roots.immediate value
- roots.operand (Miri.Interpreter.Operand.indirect place) = roots.memPlace place
Instances For
Equations
- roots.runtimePlace (Miri.Interpreter.RuntimeStackPlace.memory value) = roots.memPlace value.mplace
- roots.runtimePlace (Miri.Interpreter.RuntimeStackPlace.frameLocal frameIndex localId offset layout localsIdentity) = Except.ok roots
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
Allocation bytes include partial pointer fragments. Tree roots/exposed tags are visited even for allocations with no reachable pointer; allocation IDs of live entries themselves are deliberately not added to the collected set.
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 arena is only a representation of the actual per-thread payload vectors: visit exactly referenced entries, and reject missing/ambiguous tokens. Unused arena slots are not roots.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Concrete visitors for user-embedded state must cover inactive stacks, unwind payloads, last-error storage, thread-local allocations, TLS, env/dirs/fds, weak store buffers, entry pointers and extern statics. Do not use a callback that ignores a field merely because its source module has not been ported. Machine alloc-address/TB/VClock globals intentionally carry no GC roots.
- visitUser : MachineHooks.State K User → Roots → Except StepError Roots
- addresses : User → Memory.AllocAddresses.GlobalAddressState
- setAddresses : Memory.AllocAddresses.GlobalAddressState → User → User
Instances For
Full source collection and pruning order. All live bytes are scanned, including leaked allocations. Global compiler allocations count as live via MemoryState.isAllocLive but are not prematurely materialized by collection.
Equations
- One or more equations did not get rendered due to their size.