pub struct MemoryChannelState {
pub coarse: WrittenSpacesState,
pub precise: Option<Footprint>,
pub materialized: Option<MemoryInterfaceMap>,
}Expand description
The memory-channel component of a function’s effects: the coarse
written-space tri-state plus the precise RAM Footprint the same solve
derived.
The two components are independently ⊤: coarse is deliberately laxer, so a
function whose footprint defies classification (precise == None) usually
still has a bounded space set.
Fields§
§coarse: WrittenSpacesStateThe coarse set of non-register spaces this function may (transitively)
write. Subsumes the retired written_spaces + written_spaces_stamped
signature pair.
precise: Option<Footprint>The exhaustive outward memory footprint this function may touch, or
None for ⊤ — inexpressible in the lattice (an unclassifiable access, a
non-lockstep interface, budget saturation, or an unrebasable call edge).
Persisted so that a memory-channel effect delta can compare addresses,
not merely space granularity: two solves that both write {ram} at
different addresses must not compare Equal, since Equal is the one
verdict that licenses stopping invalidation propagation.
#[serde(default)] (→ None, i.e. ⊤) so snapshots written before the
footprint was persisted still load, conservatively.
materialized: Option<MemoryInterfaceMap>The materialized memory interface: where each by-value memory input is
bound from and each write-set output replayed to, once the RAM channel
has functionalized this function. None while the memory channel is not
materialized (the default and, today, the only state any pass sets).
The memory analogue of
RegisterChannelState::Materialized.
Unlike the register channel this is a field rather than a lattice state,
because coarse and precise are independently ⊤ and materialization is
orthogonal to both.
#[serde(default)] (→ None) so snapshots predating the memory
interface load unchanged.
Implementations§
Source§impl MemoryChannelState
impl MemoryChannelState
Sourcepub fn materialized(&self) -> Option<&MemoryInterfaceMap>
pub fn materialized(&self) -> Option<&MemoryInterfaceMap>
The materialized memory interface, if the memory channel has been materialized.
Trait Implementations§
Source§impl Clone for MemoryChannelState
impl Clone for MemoryChannelState
Source§fn clone(&self) -> MemoryChannelState
fn clone(&self) -> MemoryChannelState
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more