/** * Constructor. * * @param pattern * the ByteCodePattern to look for examples of * @param classContext * ClassContext for the class to analyze * @param method * the Method to analyze */ public PatternMatcher(ByteCodePattern pattern, ClassContext classContext, Method method) throws CFGBuilderException, DataflowAnalysisException { this.pattern = pattern; this.cfg = classContext.getCFG(method); this.cpg = classContext.getConstantPoolGen(); this.dfs = classContext.getDepthFirstSearch(method); this.vnaDataflow = classContext.getValueNumberDataflow(method); this.domAnalysis = classContext.getNonExceptionDominatorsAnalysis(method); this.workList = new LinkedList<>(); this.visitedBlockMap = new IdentityHashMap<>(); this.resultList = new LinkedList<>(); }
DominatorsAnalysis domAnalysis = classContext.getNonExceptionDominatorsAnalysis(method); removeStrictlyDominatedLocations(knownNullAndDoomedAt, domAnalysis);
DominatorsAnalysis domAnalysis = classContext.getNonExceptionDominatorsAnalysis(method); PostDominatorsAnalysis postDomAnalysis = classContext.getNonExceptionPostDominatorsAnalysis(method); BitSet extent = domAnalysis.getAllDominatedBy(createBegin.getBasicBlock());
/** * Constructor. * * @param pattern * the ByteCodePattern to look for examples of * @param classContext * ClassContext for the class to analyze * @param method * the Method to analyze */ public PatternMatcher(ByteCodePattern pattern, ClassContext classContext, Method method) throws CFGBuilderException, DataflowAnalysisException { this.pattern = pattern; this.cfg = classContext.getCFG(method); this.cpg = classContext.getConstantPoolGen(); this.dfs = classContext.getDepthFirstSearch(method); this.vnaDataflow = classContext.getValueNumberDataflow(method); this.domAnalysis = classContext.getNonExceptionDominatorsAnalysis(method); this.workList = new LinkedList<BasicBlock>(); this.visitedBlockMap = new IdentityHashMap<BasicBlock, BasicBlock>(); this.resultList = new LinkedList<ByteCodePatternMatch>(); }
DominatorsAnalysis domAnalysis = classContext.getNonExceptionDominatorsAnalysis(method); removeStrictlyDominatedLocations(knownNullAndDoomedAt, domAnalysis);
DominatorsAnalysis domAnalysis = classContext.getNonExceptionDominatorsAnalysis(method); PostDominatorsAnalysis postDomAnalysis = classContext.getNonExceptionPostDominatorsAnalysis(method); BitSet extent = domAnalysis.getAllDominatedBy(createBegin.getBasicBlock());