t.setBeginUnit(beginUnit); t.setEndUnit(endUnit);
@Override protected void internalTransform(Body b, String phaseName, Map<String, String> options) { for (Iterator<Trap> trapIt = b.getTraps().snapshotIterator(); trapIt.hasNext();) { Trap t = trapIt.next(); Unit beginUnit; while (!isDexInstruction(beginUnit = t.getBeginUnit()) && t.getBeginUnit() != t.getEndUnit()) { t.setBeginUnit(b.getUnits().getSuccOf(beginUnit)); } // If the trap is empty, we remove it if (t.getBeginUnit() == t.getEndUnit()) { trapIt.remove(); } } }
t.setBeginUnit(rangeStart); newTrap.setEndUnit(rangeStart); traps.insertAfter(newTrap, t); Trap secondTrap = (Trap) t.clone(); firstTrap.setEndUnit(rangeStart); secondTrap.setBeginUnit(rangeStart); secondTrap.setEndUnit(rangeEnd); t.setBeginUnit(rangeEnd);
public void redirectTraps(Body b, Unit oldUnit, Unit newUnit) { Chain<Trap> traps = b.getTraps(); for (Trap trap : traps) { if (trap.getHandlerUnit() == oldUnit) { trap.setHandlerUnit(newUnit); } if (trap.getBeginUnit() == oldUnit) { trap.setBeginUnit(newUnit); } if (trap.getEndUnit() == oldUnit) { trap.setEndUnit(newUnit); } } }
if (trap.getBeginUnit() == currentUnit) { Trap copiedTrap = (Trap) trap.clone(); copiedTrap.setBeginUnit(last); copiedTraps.put(trap, copiedTrap); copiedTrap.setBeginUnit(copiedHead);
private void fixJumps(Unit from, Unit to, Chain<Trap> t) { from.redirectJumpsToThisTo(to); for (Trap trap : t) { if (trap.getBeginUnit() == from) { trap.setBeginUnit(to); } if (trap.getEndUnit() == from) { trap.setEndUnit(to); } if (trap.getHandlerUnit() == from) { trap.setHandlerUnit(to); } } } }
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); }
} else { if (firstTrappedThrower != null && firstTrappedUnit != firstTrappedThrower) { trap.setBeginUnit(firstTrappedThrower);
units.insertBeforeNoRedirect(nop, headList.get(i)); headList.set(i, nop); t.setBeginUnit(nop); t.setBeginUnit(newBeginUnit); t.setHandlerUnit(newBeginUnit);
cloneTrap.setBeginUnit((Unit) bindings.get(originalTrap.getBeginUnit())); cloneTrap.setEndUnit((Unit) bindings.get(originalTrap.getEndUnit()));
to.t1.setBeginUnit(to.t2Start); safeAddTrap(b, newTrap, to.t1); to.t2.setBeginUnit(firstEndUnit); } else if (firstEndUnit == to.t2.getEndUnit()) { if (to.t1.getException() != to.t2.getException()) { = Jimple.v().newTrap(to.t1.getException(), to.t1.getBeginUnit(), firstEndUnit, to.t1.getHandlerUnit()); safeAddTrap(b, newTrap2, to.t1); to.t1.setBeginUnit(firstEndUnit); } else if (to.t1.getHandlerUnit() != to.t2.getHandlerUnit()) { to.t1.setBeginUnit(firstEndUnit);
t.setBeginUnit(rangeStart); newTrap.setEndUnit(rangeStart); traps.insertAfter(newTrap, t); Trap secondTrap = (Trap)t.clone(); firstTrap.setEndUnit(rangeStart); secondTrap.setBeginUnit(rangeStart); secondTrap.setEndUnit(rangeEnd); t.setBeginUnit(rangeEnd);
t.setBeginUnit(rangeStart); newTrap.setEndUnit(rangeStart); traps.insertAfter(newTrap, t); Trap secondTrap = (Trap)t.clone(); firstTrap.setEndUnit(rangeStart); secondTrap.setBeginUnit(rangeStart); secondTrap.setEndUnit(rangeEnd); t.setBeginUnit(rangeEnd);
if (trap.getBeginUnit() == currentUnit) { Trap copiedTrap = (Trap)trap.clone(); copiedTrap.setBeginUnit(last); copiedTraps.put(trap, copiedTrap); copiedTrap.setBeginUnit(copiedHead);
if (trap.getBeginUnit() == currentUnit) { Trap copiedTrap = (Trap)trap.clone(); copiedTrap.setBeginUnit(last); copiedTraps.put(trap, copiedTrap); copiedTrap.setBeginUnit(copiedHead);
trap.setBeginUnit(firstTrappedThrower);
trap.setBeginUnit(firstTrappedThrower);