Struct CombinedCache
pub struct CombinedCache<A, X, Y, Z> { /* private fields */ }
Expand description
Default implementation of EncodingAnalysisCache
.
Implementations§
§impl<A: Arch, X, Y, Z> CombinedCache<A, X, Y, Z>where
X: Cache<Result<MemoryAccesses<A>, AccessAnalysisError<A>>>,
Y: Cache<Result<Dataflows<A, ()>, DataflowAnalysisError<A>>>,
Z: Cache<ThresholdValues<A>>,
impl<A: Arch, X, Y, Z> CombinedCache<A, X, Y, Z>where
X: Cache<Result<MemoryAccesses<A>, AccessAnalysisError<A>>>,
Y: Cache<Result<Dataflows<A, ()>, DataflowAnalysisError<A>>>,
Z: Cache<ThresholdValues<A>>,
pub fn new(accesses: X, dataflow: Y, threshold_values: Z) -> Self
pub fn force_infer_dataflow<O: Oracle<A>>( &self, o: &mut O, memory_accesses: &MemoryAccesses<A>, ) -> Result<Dataflows<A, ()>, DataflowAnalysisError<A>>
Trait Implementations§
§impl<A: Arch> Default for CombinedCache<A, HashMapCache<Result<MemoryAccesses<A>, AccessAnalysisError<A>>>, HashMapCache<Result<Dataflows<A, ()>, DataflowAnalysisError<A>>>, HashMapCache<ThresholdValues<A>>>
impl<A: Arch> Default for CombinedCache<A, HashMapCache<Result<MemoryAccesses<A>, AccessAnalysisError<A>>>, HashMapCache<Result<Dataflows<A, ()>, DataflowAnalysisError<A>>>, HashMapCache<ThresholdValues<A>>>
§impl<A: Arch, X, Y, Z> EncodingAnalysisCache<A> for CombinedCache<A, X, Y, Z>where
X: Cache<Result<MemoryAccesses<A>, AccessAnalysisError<A>>>,
Y: Cache<Result<Dataflows<A, ()>, DataflowAnalysisError<A>>>,
Z: Cache<ThresholdValues<A>>,
impl<A: Arch, X, Y, Z> EncodingAnalysisCache<A> for CombinedCache<A, X, Y, Z>where
X: Cache<Result<MemoryAccesses<A>, AccessAnalysisError<A>>>,
Y: Cache<Result<Dataflows<A, ()>, DataflowAnalysisError<A>>>,
Z: Cache<ThresholdValues<A>>,
fn infer_accesses<O: Oracle<A>>( &self, o: &mut O, instr: &Instruction, ) -> Result<MemoryAccesses<A>, AccessAnalysisError<A>>
fn infer_dataflow<O: Oracle<A>>( &self, o: &mut O, memory_accesses: &MemoryAccesses<A>, ) -> Result<Dataflows<A, ()>, DataflowAnalysisError<A>>
fn infer_threshold_values<O: Oracle<A>>( &self, o: &mut O, dataflows: &Dataflows<A, ()>, state_gen: &StateGen<'_, A, O::MappableArea>, ) -> ThresholdValues<A>
fn num_entries(&self) -> usize
Auto Trait Implementations§
impl<A, X, Y, Z> Freeze for CombinedCache<A, X, Y, Z>
impl<A, X, Y, Z> RefUnwindSafe for CombinedCache<A, X, Y, Z>
impl<A, X, Y, Z> Send for CombinedCache<A, X, Y, Z>
impl<A, X, Y, Z> Sync for CombinedCache<A, X, Y, Z>
impl<A, X, Y, Z> Unpin for CombinedCache<A, X, Y, Z>
impl<A, X, Y, Z> UnwindSafe for CombinedCache<A, X, Y, Z>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more