for (Iterator edgesIt = Scene.v().getCallGraph().edgesOutOf(containingMethod); edgesIt.hasNext();) { Edge e = (Edge) edgesIt.next(); if (!e.src().getDeclaringClass().isApplicationClass() || e.srcStmt() == null) { continue; if (!invokeToContext.containsKey(e.srcStmt())) { invokeContext = getContextFor(e, containingMethod, containingContext); invokeToContext.put(e.srcStmt(), invokeContext); } else { invokeContext = invokeToContext.get(e.srcStmt());
while (tnIt.hasNext()) { CriticalSection tn = tnIt.next(); if (tn != exemptTn && tn.units.contains(e.srcStmt())) // if this method call originates inside a transaction...
Edge e = (Edge) edgeIt.next(); SootMethod node = e.src(); if (!path.containsMethod(node) && e.isExplicit() && e.srcStmt().containsInvokeExpr()) {
protected void internalTransform(Body b, String phaseName, Map options) { ClinitElimAnalysis a = new ClinitElimAnalysis(new BriefUnitGraph(b)); CallGraph cg = Scene.v().getCallGraph(); SootMethod m = b.getMethod(); Iterator edgeIt = cg.edgesOutOf(m); while (edgeIt.hasNext()) { Edge e = (Edge) edgeIt.next(); if (e.srcStmt() == null) { continue; } if (!e.isClinit()) { continue; } FlowSet methods = (FlowSet) a.getFlowBefore(e.srcStmt()); if (methods.contains(e.tgt())) { cg.removeEdge(e); } } } }
Stmt callsite = edge.srcStmt();
addCallTarget(srcmpag, tgtmpag, (Stmt) e.srcUnit(), e.srcCtxt(), e.tgtCtxt(), e); } else if (e.kind() == Kind.EXECUTOR) { InvokeExpr ie = e.srcStmt().getInvokeExpr(); boolean virtualCall = callAssigns.containsKey(ie); InvokeExpr ie = e.srcStmt().getInvokeExpr(); boolean virtualCall = callAssigns.containsKey(ie); assert virtualCall == true; InvokeExpr ie = e.srcStmt().getInvokeExpr(); InvokeExpr ie = e.srcStmt().getInvokeExpr(); Value arg0 = ie.getArg(0);
while (edges.hasNext()) { Edge edge = edges.next(); InvokeExpr invokeExpr = edge.srcStmt().getInvokeExpr(); Value argValue = invokeExpr.getArg(parameterRef.getIndex()); if (argValue instanceof IntConstant) { } else if (argValue instanceof Local) { Set<Object> newResults = findIntAssignmentsForLocal(edge.srcStmt(), (Local) argValue, visitedStmts); result.addAll(newResults); } else {
protected void internalTransform(Body b, String phaseName, Map options){ ClinitElimAnalysis a = new ClinitElimAnalysis( new BriefUnitGraph(b)); CallGraph cg = Scene.v().getCallGraph(); SootMethod m = b.getMethod(); Iterator edgeIt = cg.edgesOutOf(m); while (edgeIt.hasNext()){ Edge e = (Edge)edgeIt.next(); if (e.srcStmt() == null) continue; if (!e.isClinit()) continue; FlowSet methods = (FlowSet) a.getFlowBefore(e.srcStmt()); if (methods.contains(e.tgt())){ cg.removeEdge(e); } } } }
protected void internalTransform(Body b, String phaseName, Map options){ ClinitElimAnalysis a = new ClinitElimAnalysis( new BriefUnitGraph(b)); CallGraph cg = Scene.v().getCallGraph(); SootMethod m = b.getMethod(); Iterator edgeIt = cg.edgesOutOf(m); while (edgeIt.hasNext()){ Edge e = (Edge)edgeIt.next(); if (e.srcStmt() == null) continue; if (!e.isClinit()) continue; FlowSet methods = (FlowSet) a.getFlowBefore(e.srcStmt()); if (methods.contains(e.tgt())){ cg.removeEdge(e); } } } }
while (edges.hasNext()) { Edge edge = edges.next(); InvokeExpr invokeExpr = edge.srcStmt().getInvokeExpr(); Set<Object> newResults = computeVariableValues(invokeExpr.getArg(parameterRef.getIndex()), edge.srcStmt()); if (newResults.contains(TOP_VALUE) || newResults.contains(Constants.ANY_STRING)) { return Collections.singleton((Object) TOP_VALUE);
if(!path.containsMethod(node) && e.isExplicit() && e.srcStmt().containsInvokeExpr())
if(!path.containsMethod(node) && e.isExplicit() && e.srcStmt().containsInvokeExpr())
else if (e.kind() == Kind.VIRTUAL) { if (!e.src().isStatic() && e.srcStmt().getInvokeExpr() instanceof InstanceInvokeExpr) { SootMethod refMethod = e.srcStmt().getInvokeExpr().getMethod(); InstanceInvokeExpr iinv = (InstanceInvokeExpr) e.srcStmt().getInvokeExpr(); if (iinv.getBase() == e.src().getActiveBody().getThisLocal()) {
while (it.hasNext()) { soot.jimple.toolkits.callgraph.Edge e = (soot.jimple.toolkits.callgraph.Edge) it.next(); logger.debug("" + e.src() + e.srcStmt() + " =" + e.kind() + "=> " + e.tgt());