1 19 20 package edu.umd.cs.findbugs.ba; 21 22 import org.apache.bcel.generic.InstructionHandle; 23 import edu.umd.cs.findbugs.annotations.*; 24 25 31 public interface DataflowAnalysis <Fact> { 32 36 public Fact createFact(); 37 38 39 44 public Fact getStartFact(BasicBlock block); 45 46 51 public Fact getResultFact(BasicBlock block); 52 53 56 public void copy(Fact source, Fact dest); 57 58 61 public void initEntryFact(Fact result) throws DataflowAnalysisException; 62 63 69 public void initResultFact(Fact result); 70 71 74 public void makeFactTop(Fact fact); 75 76 79 public boolean isTop(Fact fact); 80 83 public boolean isForwards(); 84 85 91 public BlockOrder getBlockOrder(CFG cfg); 92 93 96 public boolean same(Fact fact1, Fact fact2); 97 98 112 public void transfer(BasicBlock basicBlock, @CheckForNull InstructionHandle end, Fact start, Fact result) throws DataflowAnalysisException; 113 114 128 public void edgeTransfer(Edge edge, Fact fact) throws DataflowAnalysisException; 129 130 138 public void meetInto(Fact fact, Edge edge, Fact result) throws DataflowAnalysisException; 139 140 144 public void startIteration(); 145 146 149 public void finishIteration(); 150 151 public int getLastUpdateTimestamp(Fact fact); 152 153 public void setLastUpdateTimestamp(Fact fact, int timestamp); 154 } 155 156 | Popular Tags |