Package proguard.analysis.cpa.bam
Interface BamCache<ContentT extends AbstractState<ContentT>>
-
- Type Parameters:
ContentT
- The content of the jvm states. For example, this can be aSetAbstractState
of taints for taint analysis or aValueAbstractState
for value analysis.
- All Known Implementing Classes:
BamCacheImpl
public interface BamCache<ContentT extends AbstractState<ContentT>>
Generic interface for the BAM cache, where the blocks represent a function identified with aSignatureT
. Along with theCfa
the signature can be used to retrieve the block (i.e. the respective CFA subgraph) as described in the BAM paper.A block abstraction is uniquely identified by a triple of an entry
AbstractState
(that may be call-context dependent, e.g. if the calling parameters or global variables are different), the correspondingPrecision
, and theSignature
of the function the block belongs to.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description java.util.Collection<BlockAbstraction<ContentT>>
get(Precision precision, MethodSignature blockKey)
Returns a collection of all the cache entries for a specified method with a certain precision, empty in case there are not such entries.BlockAbstraction<ContentT>
get(JvmAbstractState<ContentT> stateKey, Precision precisionKey, MethodSignature blockKey)
Gets the block abstraction identified by the provided keys from the cache.java.util.Collection<BlockAbstraction<ContentT>>
get(MethodSignature blockKey)
Returns a collection of all the cache entries for a specified method, empty in case there are not such entries.java.util.Set<MethodSignature>
getAllMethods()
Returns a set of all the methods that have an entry in the cache.void
put(JvmAbstractState<ContentT> stateKey, Precision precisionKey, MethodSignature blockKey, BlockAbstraction<ContentT> blockAbstraction)
Adds the block abstraction identified by the provided keys to the cache.int
size()
Returns the size of the cache.java.util.Collection<BlockAbstraction<ContentT>>
values()
Returns block abstractions stored in the cache.
-
-
-
Method Detail
-
put
void put(JvmAbstractState<ContentT> stateKey, Precision precisionKey, MethodSignature blockKey, BlockAbstraction<ContentT> blockAbstraction)
Adds the block abstraction identified by the provided keys to the cache.
-
get
BlockAbstraction<ContentT> get(JvmAbstractState<ContentT> stateKey, Precision precisionKey, MethodSignature blockKey)
Gets the block abstraction identified by the provided keys from the cache.- Returns:
- The requested block abstraction, null in case of cache-miss.
-
get
java.util.Collection<BlockAbstraction<ContentT>> get(MethodSignature blockKey)
Returns a collection of all the cache entries for a specified method, empty in case there are not such entries.
-
get
java.util.Collection<BlockAbstraction<ContentT>> get(Precision precision, MethodSignature blockKey)
Returns a collection of all the cache entries for a specified method with a certain precision, empty in case there are not such entries.
-
values
java.util.Collection<BlockAbstraction<ContentT>> values()
Returns block abstractions stored in the cache.
-
size
int size()
Returns the size of the cache.
-
getAllMethods
java.util.Set<MethodSignature> getAllMethods()
Returns a set of all the methods that have an entry in the cache.
-
-