V - the abstract value type to be tracked by the analysisS - the store type used in the analysisT - the transfer function type that is used to approximated runtime behaviorpublic interface Analysis<V extends AbstractValue<V>,S extends Store<S>,T extends TransferFunction<V,S>>
| Modifier and Type | Interface and Description | 
|---|---|
| static class  | Analysis.DirectionThe direction of an analysis instance. | 
| Modifier and Type | Method and Description | 
|---|---|
| Analysis.Direction | getDirection()Get the direction of this analysis. | 
| S | getExceptionalExitStore()Returns the exceptional exit store. | 
| @Nullable TransferInput<V,S> | getInput(Block b)Get the transfer input of a given  Blockb. | 
| S | getRegularExitStore()Returns the regular exit store, or  null, if there is no such store (because the
 method cannot exit through the regular exit block). | 
| AnalysisResult<V,S> | getResult()The result of running the analysis. | 
| T | getTransferFunction()Get the transfer function of this analysis. | 
| V | getValue(Node n) | 
| boolean | isRunning()Is the analysis currently running? | 
| void | performAnalysis(ControlFlowGraph cfg)Perform the actual analysis. | 
| void | performAnalysisBlock(Block b)Perform the actual analysis on one block. | 
| S | runAnalysisFor(Node node,
              boolean before,
              TransferInput<V,S> transferInput,
              IdentityHashMap<Node,V> nodeValues,
              Map<TransferInput<V,S>,IdentityHashMap<Node,TransferResult<V,S>>> analysisCaches)Runs the analysis again within the block of  nodeand returns the store at the
 location ofnode. | 
Analysis.Direction getDirection()
boolean isRunning()
void performAnalysis(ControlFlowGraph cfg)
cfg - the control flow graphvoid performAnalysisBlock(Block b)
b - the block to analyzeS runAnalysisFor(Node node, boolean before, TransferInput<V,S> transferInput, IdentityHashMap<Node,V> nodeValues, Map<TransferInput<V,S>,IdentityHashMap<Node,TransferResult<V,S>>> analysisCaches)
node and returns the store at the
 location of node. If before is true, then the store immediately before the
 Node node is returned. Otherwise, the store immediately after node is
 returned. If analysisCaches is not null, this method uses a cache. analysisCaches is a map of a block of node to the cached analysis result. If the cache for
 transferInput is not in analysisCaches, this method creates new cache and
 stores it in analysisCaches. The cache is a map of nodes to the analysis results of
 the nodes.node - the node to analyzebefore - the boolean value to indicate which store to return (if it is true, return the
     store immediately before node; otherwise, the store after node is
     returned)transferInput - the transfer input of the block of this nodenodeValues - abstract values of nodesanalysisCaches - caches of analysis resultsnode (depends on the value of before) after
     running the analysisAnalysisResult<V,S> getResult()
T getTransferFunction()
@Nullable TransferInput<V,S> getInput(Block b)
Block b.b - a given BlockV getValue(Node n)
Node n, or null if no information is
 available. Note that if the analysis has not finished yet, this value might not represent the
 final value for this node.n - n a noden, or null if no information is availableS getRegularExitStore()
null, if there is no such store (because the
 method cannot exit through the regular exit block).null, if there is no such store (because the
     method cannot exit through the regular exit block)S getExceptionalExitStore()