public Local newLocal(String name, soot.Type type) { Local local = Jimple.v().newLocal(name, type); body.getLocals().add(local); if(name.equals("this") && thisName == null) thisName = local; return local; }
private Iterator<SootClass> reachableClasses() { return Scene.v().getApplicationClasses().snapshotIterator(); }
private void printStatementsInBody(Body body, java.io.PrintWriter out) { if (Options.v().verbose()) { System.out.println("Printing " + body.getMethod().getName()); } Chain<Unit> units = ((DavaBody) body).getUnits(); if (units.size() != 1) { throw new RuntimeException("DavaBody AST doesn't have single root."); } UnitPrinter up = new DavaUnitPrinter((DavaBody) body); ((ASTNode) units.getFirst()).toString(up); out.print(up.toString()); }
/** * Removes a Unit occurring before some other Unit in the Block. * * @param item * A Unit to be remove from the Block's Unit Chain. * @return True if the item could be found and removed. * */ public boolean remove(Unit item) { Chain<Unit> methodBody = mBody.getUnits(); if (item == mHead) { mHead = methodBody.getSuccOf(item); } else if (item == mTail) { mTail = methodBody.getPredOf(item); } return methodBody.remove(item); }
public static boolean isExceptionCaughtAt(Chain<Unit> units, Unit u, Iterator<Trap> trapsIt) { while (trapsIt.hasNext()) { Trap t = trapsIt.next(); Iterator<Unit> it = units.iterator(t.getBeginUnit(), units.getPredOf(t.getEndUnit())); while (it.hasNext()) { if (u.equals(it.next())) { return true; } } } return false; }
Iterator<Local> localsIt = b.getLocals().iterator(); Set<String> localNames = new HashSet<String>(b.getLocals().size()); while (localsIt.hasNext()) { localNames.add((localsIt.next()).getName()); Iterator<Unit> unitsIt = units.snapshotIterator(); while (unitsIt.hasNext()) { Stmt s = (Stmt) unitsIt.next(); EquivalentValue ev = new EquivalentValue(v); if (availExprs.contains(ev)) { b.getLocals().add(l); units.insertAfter(copier, origCalc);
int numPruned = units.size(); Set<Unit> reachable = units.isEmpty() ? Collections.<Unit>emptySet() : reachable(units.getFirst(), graph); for (Iterator<Trap> it = body.getTraps().iterator(); it.hasNext();) { Trap trap = it.next(); if ((trap.getBeginUnit() == trap.getEndUnit()) || !reachable.contains(trap.getHandlerUnit())) { units.retainAll(reachable); numPruned -= units.size();
int n = body.getLocals().size(); int[] oldNumbers = new int[n]; Chain<Local> locals = body.getLocals(); if (v instanceof Local) { Local l = (Local) v; assert locals.contains(l); usedLocals[l.getNumber()] = true; if (v instanceof Local) { Local l = (Local) v; assert locals.contains(l); usedLocals[l.getNumber()] = true; body.getLocals().clear(); body.getLocals().addAll(keep);
Chain<Trap> traps = b.getTraps(); Chain<Unit> units = b.getUnits(); Iterator<Trap> trapsIt = traps.snapshotIterator(); Iterator<Unit> unitIt = units.iterator(t.getBeginUnit(), t.getEndUnit()); t.setBeginUnit(rangeStart); newTrap.setEndUnit(rangeStart); traps.insertAfter(newTrap, t); } else { break; t.setBeginUnit(rangeEnd); traps.insertAfter(firstTrap, t); traps.insertAfter(secondTrap, t);
for (Unit stmt : units.toArray(new Unit[units.size()])) { if (stmt instanceof IfStmt) { IfStmt ifs = (IfStmt) stmt; units.insertAfter(newStmt, stmt); numTrue++; } else { units.remove(stmt);
protected void testChain() { System.out.println("******** chain of pegcallgraph********"); Iterator it = chain.iterator(); while (it.hasNext()) { SootMethod sm = (SootMethod) it.next(); System.out.println(sm); // System.out.println("name: "+sm.getName()); } }
Map<Unit, ThrowableSet> unitToUncaughtThrowables = new LinkedHashMap<Unit, ThrowableSet>(units.size()); Map<Unit, Collection<ExceptionDest>> result = null; for (Iterator<Unit> unitIt = units.iterator(trap.getBeginUnit(), units.getPredOf(trap.getEndUnit())); unitIt .hasNext();) { Unit unit = unitIt.next();
public static void updateTraps(Unit oldu, Unit newu, Chain<Trap> traps) { int size = traps.size(); if (size == 0) { return; } Trap t = traps.getFirst(); do { if (t.getBeginUnit() == oldu) { t.setBeginUnit(newu); } if (t.getEndUnit() == oldu) { t.setEndUnit(newu); } if (t.getHandlerUnit() == oldu) { t.setHandlerUnit(newu); } } while ((--size > 0) && (t = traps.getSuccOf(t)) != null); }
Set<Unit> trappedUnits = TrapManager.getTrappedUnitsOf(b); for (Stmt s = (Stmt) units.getLast(); s != units.getFirst(); s = (Stmt) units.getPredOf(s)) { if (trappedUnits.contains(s)) { continue; if (s == units.getFirst()) { break; Stmt prosInvoke = (Stmt) units.getPredOf(s); if (prosInvoke == units.getFirst()) { break; Stmt prosNew = (Stmt) units.getPredOf(prosInvoke); Stmt last = (Stmt) units.getLast();