@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * abs.hashCode(); result = prime * result + ((abs.getPredecessor() == null) ? 0 : abs.getPredecessor().hashCode()); result = prime * result + ((abs.getCurrentStmt() == null) ? 0 : abs.getCurrentStmt().hashCode()); result = prime * result + ((abs.getCorrespondingCallSite() == null) ? 0 : abs.getCorrespondingCallSite().hashCode()); return result; }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; AbstractionCacheKey other = (AbstractionCacheKey) obj; if (!abs.equals(other.abs)) return false; if (abs.getPredecessor() != other.abs.getPredecessor()) return false; if (abs.getCurrentStmt() != other.abs.getCurrentStmt()) return false; if (abs.getCorrespondingCallSite() != other.abs.getCorrespondingCallSite()) return false; return true; }
if (abs.getCurrentStmt() == null && abs.getCorrespondingCallSite() == null) return this; if (abs.getCorrespondingCallSite() == null && !trackPath) return this; && a.getCorrespondingCallSite() == abs.getCorrespondingCallSite() && a.equals(abs)) return null; if (topAbs.equals(abs) && topAbs.getCorrespondingCallSite() != null && topAbs.getCorrespondingCallSite() == abs.getCorrespondingCallSite() && topAbs.getCurrentStmt() != abs.getCurrentStmt()) return null; if (abs.getCorrespondingCallSite() != null && abs.getCorrespondingCallSite() != abs.getCurrentStmt()) { if (scap == null) scap = this.clone(); && scap.callStack.size() >= pathConfig.getMaxCallStackSize()) return null; scap.callStack.add(abs.getCorrespondingCallSite());
if (curAbs.getCorrespondingCallSite() != null/* newCallStack.push(new Pair<Stmt, Set<Abstraction>>(curAbs.getCorrespondingCallSite(), Collections.newSetFromMap(new IdentityHashMap<Abstraction, Boolean>())));
&& output.getCorrespondingCallSite() == output.getCurrentStmt()) { output.setCurrentStmt(null); output.setCorrespondingCallSite(null); && output.getCorrespondingCallSite() == null && output.getCurrentStmt() != null) { if (output.getCorrespondingCallSite() == null && output.getCurrentStmt() != null && !output.getCurrentStmt().containsInvokeExpr() && !(output.getCurrentStmt() instanceof ReturnStmt)
private boolean processPredecessor(SourceContextAndPath scap, Abstraction pred) { if (pred.getCurrentStmt() != null && pred.getCurrentStmt() == pred.getCorrespondingCallSite()) { SourceContextAndPath extendedScap = scap.extendPath(pred, pathConfig); if (extendedScap == null)
if (abs.getCurrentStmt() == null && abs.getCorrespondingCallSite() == null) return this; if (abs.getSourceContext() != null) if (abs.getCorrespondingCallSite() != null && abs.getCorrespondingCallSite() != abs.getCurrentStmt()) { if (scap.callStack == null) scap.callStack = new ExtensibleList<Stmt>(); else if (!scap.callStack.isEmpty() && scap.callStack.getFirstSlow() == abs.getCorrespondingCallSite()) return null; scap.callStack = scap.callStack.add(abs.getCorrespondingCallSite()); final Stmt callSite = abs.getCorrespondingCallSite(); boolean matched = false; if (abs.getCorrespondingCallSite() != abs.getCurrentStmt()) { Pair<SourceContextAndPath, Stmt> pathAndItem = scap.popTopCallStackItem(); if (pathAndItem != null) {
if (input.getCurrentStmt() == null) { input.setCurrentStmt(output.getCurrentStmt()); input.setCorrespondingCallSite(output.getCorrespondingCallSite()); return input;