ContentT - The content of the jvm states. For example, this can be a SetAbstractState of taints for taint analysis or a ValueAbstractState for value analysis.public interface BamCache<ContentT extends AbstractState<ContentT>>
SignatureT. Along with the Cfa 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 corresponding Precision, and the Signature of the function the block belongs
to.
| Modifier and Type | Method and Description |
|---|---|
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.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.
|
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.
|
void put(JvmAbstractState<ContentT> stateKey, Precision precisionKey, MethodSignature blockKey, BlockAbstraction<ContentT> blockAbstraction)
BlockAbstraction<ContentT> get(JvmAbstractState<ContentT> stateKey, Precision precisionKey, MethodSignature blockKey)
java.util.Collection<BlockAbstraction<ContentT>> get(MethodSignature blockKey)
java.util.Collection<BlockAbstraction<ContentT>> get(Precision precision, MethodSignature blockKey)
java.util.Collection<BlockAbstraction<ContentT>> values()
int size()
java.util.Set<MethodSignature> getAllMethods()