public void postElimOpt() { boolean optElim = options.node_elim_opt(); if (optElim) { DeadAssignmentEliminator.v().transform(body); UnreachableCodeEliminator.v().transform(body); UnconditionalBranchFolder.v().transform(body); Aggregator.v().transform(body); UnusedLocalEliminator.v().transform(body); } }
public soot.jimple.toolkits.scalar.UnconditionalBranchFolder soot_jimple_toolkits_scalar_UnconditionalBranchFolder() { if (instance_soot_jimple_toolkits_scalar_UnconditionalBranchFolder == null) { synchronized (this) { if (instance_soot_jimple_toolkits_scalar_UnconditionalBranchFolder == null) instance_soot_jimple_toolkits_scalar_UnconditionalBranchFolder = new soot.jimple.toolkits.scalar.UnconditionalBranchFolder(g); } } return instance_soot_jimple_toolkits_scalar_UnconditionalBranchFolder; } protected void release_soot_jimple_toolkits_scalar_UnconditionalBranchFolder() {
updateCounters(6, true); newTarget = getFinalTarget(target); if (newTarget == null) { newTarget = stmt; updateCounters(1, true); } else if (target instanceof IfStmt) { updateCounters(3, false); newTarget = getFinalTarget(target); if (newTarget == null) { newTarget = stmt; updateCounters(2, true); } else if (target instanceof IfStmt) { updateCounters(4, false);
p.add(new Transform("jop.nce", new NullCheckEliminator())); p.add(new Transform("jop.uce1", UnreachableCodeEliminator.v())); p.add(new Transform("jop.ubf1", UnconditionalBranchFolder.v())); p.add(new Transform("jop.uce2", UnreachableCodeEliminator.v())); p.add(new Transform("jop.ubf2", UnconditionalBranchFolder.v())); p.add(new Transform("jop.ule", UnusedLocalEliminator.v()));
private Stmt getFinalTarget(Stmt stmt) { Stmt finalTarget = null, target; // if not a goto, this is the final target if (!(stmt instanceof GotoStmt)) { return stmt; } // first map this statement to itself, so we can detect cycles stmtMap.put(stmt, stmt); target = (Stmt) ((GotoStmt) stmt).getTarget(); // check if target is in statement map if (stmtMap.containsKey(target)) { // see if it maps to itself finalTarget = stmtMap.get(target); if (finalTarget == target) { // this is part of a cycle finalTarget = null; } } else { finalTarget = getFinalTarget(target); } stmtMap.put(stmt, finalTarget); return finalTarget; } // getFinalTarget
p.add(new Transform("jop.nce", new NullCheckEliminator())); p.add(new Transform("jop.uce1", UnreachableCodeEliminator.v())); p.add(new Transform("jop.ubf1", UnconditionalBranchFolder.v())); p.add(new Transform("jop.uce2", UnreachableCodeEliminator.v())); p.add(new Transform("jop.ubf2", UnconditionalBranchFolder.v())); p.add(new Transform("jop.ule", UnusedLocalEliminator.v()));
private Stmt getFinalTarget(Stmt stmt) { Stmt finalTarget=null, target; // if not a goto, this is the final target if (!(stmt instanceof GotoStmt)) return stmt; // first map this statement to itself, so we can detect cycles stmtMap.put(stmt, stmt); target = (Stmt)((GotoStmt)stmt).getTarget(); // check if target is in statement map if (stmtMap.containsKey(target)) { // see if it maps to itself finalTarget = stmtMap.get(target); if (finalTarget == target) // this is part of a cycle finalTarget = null; } else finalTarget = getFinalTarget(target); stmtMap.put(stmt, finalTarget); return finalTarget; } // getFinalTarget
updateCounters(6, true); newTarget = getFinalTarget(target); if (newTarget == null) newTarget = stmt; ((GotoStmt)stmt).setTarget(newTarget); updateCounters(1, true); updateCounters(3, false); newTarget = getFinalTarget(target); if (newTarget == null) newTarget = stmt; ((IfStmt)stmt).setTarget(newTarget); updateCounters(2, true); updateCounters(4, false);
p.add(new Transform("jop.nce", new NullCheckEliminator())); p.add(new Transform("jop.uce1", UnreachableCodeEliminator.v())); p.add(new Transform("jop.ubf1", UnconditionalBranchFolder.v())); p.add(new Transform("jop.uce2", UnreachableCodeEliminator.v())); p.add(new Transform("jop.ubf2", UnconditionalBranchFolder.v())); p.add(new Transform("jop.ule", UnusedLocalEliminator.v()));
public soot.jimple.toolkits.scalar.UnconditionalBranchFolder soot_jimple_toolkits_scalar_UnconditionalBranchFolder() { if( instance_soot_jimple_toolkits_scalar_UnconditionalBranchFolder == null ) instance_soot_jimple_toolkits_scalar_UnconditionalBranchFolder = new soot.jimple.toolkits.scalar.UnconditionalBranchFolder( g ); return instance_soot_jimple_toolkits_scalar_UnconditionalBranchFolder; }
private Stmt getFinalTarget(Stmt stmt) { Stmt finalTarget=null, target; // if not a goto, this is the final target if (!(stmt instanceof GotoStmt)) return stmt; // first map this statement to itself, so we can detect cycles stmtMap.put(stmt, stmt); target = (Stmt)((GotoStmt)stmt).getTarget(); // check if target is in statement map if (stmtMap.containsKey(target)) { // see if it maps to itself finalTarget = stmtMap.get(target); if (finalTarget == target) // this is part of a cycle finalTarget = null; } else finalTarget = getFinalTarget(target); stmtMap.put(stmt, finalTarget); return finalTarget; } // getFinalTarget
updateCounters(6, true); newTarget = getFinalTarget(target); if (newTarget == null) newTarget = stmt; ((GotoStmt)stmt).setTarget(newTarget); updateCounters(1, true); updateCounters(3, false); newTarget = getFinalTarget(target); if (newTarget == null) newTarget = stmt; ((IfStmt)stmt).setTarget(newTarget); updateCounters(2, true); updateCounters(4, false);
public soot.jimple.toolkits.scalar.UnconditionalBranchFolder soot_jimple_toolkits_scalar_UnconditionalBranchFolder() { if( instance_soot_jimple_toolkits_scalar_UnconditionalBranchFolder == null ) instance_soot_jimple_toolkits_scalar_UnconditionalBranchFolder = new soot.jimple.toolkits.scalar.UnconditionalBranchFolder( g ); return instance_soot_jimple_toolkits_scalar_UnconditionalBranchFolder; }