| 1 19 20 package edu.umd.cs.findbugs.ba.vna; 21 22 import java.util.HashMap ; 23 import java.util.Map ; 24 25 import org.apache.bcel.classfile.Method; 26 27 import edu.umd.cs.findbugs.ba.AbstractDataflow; 28 import edu.umd.cs.findbugs.ba.CFG; 29 import edu.umd.cs.findbugs.ba.Frame; 30 import edu.umd.cs.findbugs.ba.SignatureParser; 31 32 public class ValueNumberDataflow extends AbstractDataflow<ValueNumberFrame, ValueNumberAnalysis> { 33 public ValueNumberDataflow(CFG cfg, ValueNumberAnalysis analysis) { 34 super(cfg, analysis); 35 } 36 37 44 public Map <ValueNumber, Integer > getValueNumberToParamMap(Method method) { 45 return getValueNumberToParamMap(method.getSignature(), method.isStatic()); 46 } 47 48 56 public Map <ValueNumber, Integer > getValueNumberToParamMap(String methodSignature, boolean isStatic) { 57 HashMap <ValueNumber, Integer > valueNumberToParamMap = 58 new HashMap <ValueNumber, Integer >(); 59 60 ValueNumberFrame frameAtEntry = getStartFact(getCFG().getEntry()); 61 62 int numParams = new SignatureParser(methodSignature).getNumParameters(); 63 int shift = isStatic ? 0 : 1; 64 for (int i = 0; i < numParams; ++i) { 65 valueNumberToParamMap.put( 66 frameAtEntry.getValue(i + shift), (Integer )(i)); 67 } 68 69 return valueNumberToParamMap; 70 71 } 72 } 73 74 | Popular Tags |