A checked value port of Miri's size/alignment/thread keyed address reuse pool. RNG outputs are explicit legal-choice arguments; no seed or PRNG stream is introduced.
Equations
Instances For
Only this distinction from rustc MemoryKind affects reuse-pool behavior:
stack allocations are never remembered or reused. All other kinds follow the
same pool policy.
- stack : AddressMemoryKind
- other : AddressMemoryKind
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
The source thread index is an ordered u32.
Instances For
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
- address : UInt64
- size : ABI.Size
- thread : AddressThreadId
- clock : Concurrency.VClock
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
- addressReuseRate : Float
- addressReuseCrossThreadRate : Float
- pool : Array (Array ReusableAddress)
The outer index is the alignment's log2, like source
subpool.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- invalidRate (rate : Float) : ReusePoolError
- illegalBernoulliChoice (rate : Float) (choice : Bool) : ReusePoolError
- invalidAlignment (error : ABI.AlignError) : ReusePoolError
- invalidRangeChoice (choice begin stop : Nat) : ReusePoolError
- malformedPoolIndex (index length : Nat) : ReusePoolError
- malformedChoiceIndex (index length : Nat) : ReusePoolError
- reusedAddressMisaligned (address alignment : UInt64) : ReusePoolError
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.
- state : ReusePool
- outcome : Except ReusePoolError α
Instances For
- address : UInt64
- clockToAcquire : Option Concurrency.VClock
A cross-thread address carries the donor clock for an acquire hook.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
The support of a source rng.random_bool(rate) result. For interior rates
both results are possible; endpoints permit only the corresponding result.
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
Add an address using the explicit outcome of the source Bernoulli draw. Stack addresses short-circuit before consuming that choice.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Source prefix before the pool-index random draw. Exposes the exact half-open candidate range while retaining ensure_subpool mutations, so an effectful choice input may be requested at the actual source event.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Try taking a reusable address. reuseChoice and crossThreadChoice are
the two source Bernoulli outcomes; selection is the absolute usize index
sampled from the source's eligible half-open [begin, stop) range. A missing
candidate returns none while keeping the source's possibly extended empty
subpool.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The sorted-and-bounded pool invariant maintained by public mutations.
Equations
- One or more equations did not get rendered due to their size.