pub struct FixedPointResidentGraph { /* private fields */ }Expand description
Backend-resident invariant graph inputs for fixed-point analyses.
Implementations§
Source§impl FixedPointResidentGraph
impl FixedPointResidentGraph
Sourcepub fn reaching(
&self,
pipeline: &dyn CompiledPipeline,
seed_bits: &[u32],
max_iterations: u32,
config: &DispatchConfig,
scratch: &mut FixedPointScratch,
) -> Result<Vec<u32>, String>
pub fn reaching( &self, pipeline: &dyn CompiledPipeline, seed_bits: &[u32], max_iterations: u32, config: &DispatchConfig, scratch: &mut FixedPointScratch, ) -> Result<Vec<u32>, String>
Run reaching-definition closure through resident graph resources.
Sourcepub fn reaching_into(
&self,
pipeline: &dyn CompiledPipeline,
seed_bits: &[u32],
max_iterations: u32,
config: &DispatchConfig,
scratch: &mut FixedPointScratch,
result: &mut Vec<u32>,
) -> Result<(), String>
pub fn reaching_into( &self, pipeline: &dyn CompiledPipeline, seed_bits: &[u32], max_iterations: u32, config: &DispatchConfig, scratch: &mut FixedPointScratch, result: &mut Vec<u32>, ) -> Result<(), String>
Run reaching-definition closure through resident graph resources into caller-owned result storage.
Sourcepub fn reaching_resident_frontier(
&self,
backend: &dyn VyreBackend,
pipeline: &dyn CompiledPipeline,
seed_bits: &[u32],
max_iterations: u32,
config: &DispatchConfig,
scratch: &mut FixedPointScratch,
) -> Result<Vec<u32>, String>
pub fn reaching_resident_frontier( &self, backend: &dyn VyreBackend, pipeline: &dyn CompiledPipeline, seed_bits: &[u32], max_iterations: u32, config: &DispatchConfig, scratch: &mut FixedPointScratch, ) -> Result<Vec<u32>, String>
Run reaching-definition closure with both graph and frontier buffers passed as resident resources.
Sourcepub fn reaching_resident_frontier_into(
&self,
backend: &dyn VyreBackend,
pipeline: &dyn CompiledPipeline,
seed_bits: &[u32],
max_iterations: u32,
config: &DispatchConfig,
scratch: &mut FixedPointScratch,
result: &mut Vec<u32>,
) -> Result<(), String>
pub fn reaching_resident_frontier_into( &self, backend: &dyn VyreBackend, pipeline: &dyn CompiledPipeline, seed_bits: &[u32], max_iterations: u32, config: &DispatchConfig, scratch: &mut FixedPointScratch, result: &mut Vec<u32>, ) -> Result<(), String>
Run reaching-definition closure with graph/frontier resident resources into caller-owned result storage.
Sourcepub fn live(
&self,
pipeline: &dyn CompiledPipeline,
seed_bits: &[u32],
max_iterations: u32,
config: &DispatchConfig,
scratch: &mut FixedPointScratch,
) -> Result<Vec<u32>, String>
pub fn live( &self, pipeline: &dyn CompiledPipeline, seed_bits: &[u32], max_iterations: u32, config: &DispatchConfig, scratch: &mut FixedPointScratch, ) -> Result<Vec<u32>, String>
Run live-variable closure through resident graph resources.
Sourcepub fn live_into(
&self,
pipeline: &dyn CompiledPipeline,
seed_bits: &[u32],
max_iterations: u32,
config: &DispatchConfig,
scratch: &mut FixedPointScratch,
result: &mut Vec<u32>,
) -> Result<(), String>
pub fn live_into( &self, pipeline: &dyn CompiledPipeline, seed_bits: &[u32], max_iterations: u32, config: &DispatchConfig, scratch: &mut FixedPointScratch, result: &mut Vec<u32>, ) -> Result<(), String>
Run live-variable closure through resident graph resources into caller-owned result storage.
Sourcepub fn live_resident_frontier(
&self,
backend: &dyn VyreBackend,
pipeline: &dyn CompiledPipeline,
seed_bits: &[u32],
max_iterations: u32,
config: &DispatchConfig,
scratch: &mut FixedPointScratch,
) -> Result<Vec<u32>, String>
pub fn live_resident_frontier( &self, backend: &dyn VyreBackend, pipeline: &dyn CompiledPipeline, seed_bits: &[u32], max_iterations: u32, config: &DispatchConfig, scratch: &mut FixedPointScratch, ) -> Result<Vec<u32>, String>
Run live-variable closure with both graph and frontier buffers passed as resident resources.
Sourcepub fn live_resident_frontier_into(
&self,
backend: &dyn VyreBackend,
pipeline: &dyn CompiledPipeline,
seed_bits: &[u32],
max_iterations: u32,
config: &DispatchConfig,
scratch: &mut FixedPointScratch,
result: &mut Vec<u32>,
) -> Result<(), String>
pub fn live_resident_frontier_into( &self, backend: &dyn VyreBackend, pipeline: &dyn CompiledPipeline, seed_bits: &[u32], max_iterations: u32, config: &DispatchConfig, scratch: &mut FixedPointScratch, result: &mut Vec<u32>, ) -> Result<(), String>
Run live-variable closure with graph/frontier resident resources into caller-owned result storage.
Sourcepub fn points_to_subset(
&self,
pipeline: &dyn CompiledPipeline,
seed_bits: &[u32],
max_iterations: u32,
config: &DispatchConfig,
scratch: &mut FixedPointScratch,
) -> Result<Vec<u32>, String>
pub fn points_to_subset( &self, pipeline: &dyn CompiledPipeline, seed_bits: &[u32], max_iterations: u32, config: &DispatchConfig, scratch: &mut FixedPointScratch, ) -> Result<Vec<u32>, String>
Run points-to subset closure through resident graph resources.
Sourcepub fn points_to_subset_into(
&self,
pipeline: &dyn CompiledPipeline,
seed_bits: &[u32],
max_iterations: u32,
config: &DispatchConfig,
scratch: &mut FixedPointScratch,
result: &mut Vec<u32>,
) -> Result<(), String>
pub fn points_to_subset_into( &self, pipeline: &dyn CompiledPipeline, seed_bits: &[u32], max_iterations: u32, config: &DispatchConfig, scratch: &mut FixedPointScratch, result: &mut Vec<u32>, ) -> Result<(), String>
Run points-to subset closure through resident graph resources into caller-owned result storage.
Sourcepub fn points_to_subset_resident_frontier(
&self,
backend: &dyn VyreBackend,
pipeline: &dyn CompiledPipeline,
seed_bits: &[u32],
max_iterations: u32,
config: &DispatchConfig,
scratch: &mut FixedPointScratch,
) -> Result<Vec<u32>, String>
pub fn points_to_subset_resident_frontier( &self, backend: &dyn VyreBackend, pipeline: &dyn CompiledPipeline, seed_bits: &[u32], max_iterations: u32, config: &DispatchConfig, scratch: &mut FixedPointScratch, ) -> Result<Vec<u32>, String>
Run points-to subset closure with both graph and frontier buffers passed as resident resources.
Sourcepub fn points_to_subset_resident_frontier_into(
&self,
backend: &dyn VyreBackend,
pipeline: &dyn CompiledPipeline,
seed_bits: &[u32],
max_iterations: u32,
config: &DispatchConfig,
scratch: &mut FixedPointScratch,
result: &mut Vec<u32>,
) -> Result<(), String>
pub fn points_to_subset_resident_frontier_into( &self, backend: &dyn VyreBackend, pipeline: &dyn CompiledPipeline, seed_bits: &[u32], max_iterations: u32, config: &DispatchConfig, scratch: &mut FixedPointScratch, result: &mut Vec<u32>, ) -> Result<(), String>
Run points-to subset closure with graph/frontier resident resources into caller-owned result storage.
Sourcepub fn slice(
&self,
pipeline: &dyn CompiledPipeline,
seed_bits: &[u32],
max_iterations: u32,
config: &DispatchConfig,
scratch: &mut FixedPointScratch,
) -> Result<Vec<u32>, String>
pub fn slice( &self, pipeline: &dyn CompiledPipeline, seed_bits: &[u32], max_iterations: u32, config: &DispatchConfig, scratch: &mut FixedPointScratch, ) -> Result<Vec<u32>, String>
Run backward-slice closure through resident graph resources.
Sourcepub fn slice_into(
&self,
pipeline: &dyn CompiledPipeline,
seed_bits: &[u32],
max_iterations: u32,
config: &DispatchConfig,
scratch: &mut FixedPointScratch,
result: &mut Vec<u32>,
) -> Result<(), String>
pub fn slice_into( &self, pipeline: &dyn CompiledPipeline, seed_bits: &[u32], max_iterations: u32, config: &DispatchConfig, scratch: &mut FixedPointScratch, result: &mut Vec<u32>, ) -> Result<(), String>
Run backward-slice closure through resident graph resources into caller-owned result storage.
Sourcepub fn slice_resident_frontier(
&self,
backend: &dyn VyreBackend,
pipeline: &dyn CompiledPipeline,
seed_bits: &[u32],
max_iterations: u32,
config: &DispatchConfig,
scratch: &mut FixedPointScratch,
) -> Result<Vec<u32>, String>
pub fn slice_resident_frontier( &self, backend: &dyn VyreBackend, pipeline: &dyn CompiledPipeline, seed_bits: &[u32], max_iterations: u32, config: &DispatchConfig, scratch: &mut FixedPointScratch, ) -> Result<Vec<u32>, String>
Run backward-slice closure with both graph and frontier buffers passed as resident resources.
Sourcepub fn slice_resident_frontier_into(
&self,
backend: &dyn VyreBackend,
pipeline: &dyn CompiledPipeline,
seed_bits: &[u32],
max_iterations: u32,
config: &DispatchConfig,
scratch: &mut FixedPointScratch,
result: &mut Vec<u32>,
) -> Result<(), String>
pub fn slice_resident_frontier_into( &self, backend: &dyn VyreBackend, pipeline: &dyn CompiledPipeline, seed_bits: &[u32], max_iterations: u32, config: &DispatchConfig, scratch: &mut FixedPointScratch, result: &mut Vec<u32>, ) -> Result<(), String>
Run backward-slice closure with graph/frontier resident resources into caller-owned result storage.
Source§impl FixedPointResidentGraph
impl FixedPointResidentGraph
Sourcepub fn upload(
backend: &dyn VyreBackend,
graph: &FixedPointForwardGraph,
) -> Result<Self, BackendError>
pub fn upload( backend: &dyn VyreBackend, graph: &FixedPointForwardGraph, ) -> Result<Self, BackendError>
Upload invariant graph buffers once into backend-resident resources.
Sourcepub fn node_count(&self) -> u32
pub fn node_count(&self) -> u32
Number of graph nodes in the resident dispatch domain.
Sourcepub fn kind(&self) -> FixedPointAnalysisKind
pub fn kind(&self) -> FixedPointAnalysisKind
Analysis family this resident graph was uploaded for.
Sourcepub fn require_kind(
&self,
expected: FixedPointAnalysisKind,
consumer: &str,
) -> Result<(), String>
pub fn require_kind( &self, expected: FixedPointAnalysisKind, consumer: &str, ) -> Result<(), String>
Verify this resident graph layout is consumed by the analysis family that uploaded it.
Sourcepub fn edge_count(&self) -> u32
pub fn edge_count(&self) -> u32
Number of graph edges in the resident dispatch domain.
Sourcepub fn stable_layout_hash(&self) -> u64
pub fn stable_layout_hash(&self) -> u64
Stable hash of the normalized graph layout uploaded into resident buffers.
Sourcepub fn require_same_layout(
&self,
graph: &FixedPointForwardGraph,
consumer: &str,
) -> Result<(), String>
pub fn require_same_layout( &self, graph: &FixedPointForwardGraph, consumer: &str, ) -> Result<(), String>
Verify that a prepared graph plan matches this resident graph layout.
Sourcepub fn resident_resource_count(&self) -> usize
pub fn resident_resource_count(&self) -> usize
Number of resident invariant graph resources.
Sourcepub fn resources_with_frontier_into(
&self,
frontier_bytes: &[u8],
resources: &mut Vec<Resource>,
) -> Result<(), String>
pub fn resources_with_frontier_into( &self, frontier_bytes: &[u8], resources: &mut Vec<Resource>, ) -> Result<(), String>
Rebuild borrowed-frontier dispatch resources into caller-owned scratch.
Sourcepub fn resources_with_resident_frontier_into(
&self,
frontier_in: &Resource,
frontier_out: &Resource,
resources: &mut Vec<Resource>,
) -> Result<(), String>
pub fn resources_with_resident_frontier_into( &self, frontier_in: &Resource, frontier_out: &Resource, resources: &mut Vec<Resource>, ) -> Result<(), String>
Rebuild resident-frontier dispatch resources into caller-owned scratch.
Sourcepub fn resources_with_resident_frontier_changed_into(
&self,
frontier: &Resource,
changed: &Resource,
resources: &mut Vec<Resource>,
) -> Result<(), String>
pub fn resources_with_resident_frontier_changed_into( &self, frontier: &Resource, changed: &Resource, resources: &mut Vec<Resource>, ) -> Result<(), String>
Build dispatch resources with an in-place resident frontier and a resident changed flag.
Sourcepub fn free(self, backend: &dyn VyreBackend) -> Result<(), BackendError>
pub fn free(self, backend: &dyn VyreBackend) -> Result<(), BackendError>
Free every resident resource owned by this graph.
Trait Implementations§
Source§impl Clone for FixedPointResidentGraph
impl Clone for FixedPointResidentGraph
Source§fn clone(&self) -> FixedPointResidentGraph
fn clone(&self) -> FixedPointResidentGraph
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more