public soot.jimple.toolkits.scalar.LocalNameStandardizer soot_jimple_toolkits_scalar_LocalNameStandardizer() { if (instance_soot_jimple_toolkits_scalar_LocalNameStandardizer == null) { synchronized (this) { if (instance_soot_jimple_toolkits_scalar_LocalNameStandardizer == null) instance_soot_jimple_toolkits_scalar_LocalNameStandardizer = new soot.jimple.toolkits.scalar.LocalNameStandardizer(g); } } return instance_soot_jimple_toolkits_scalar_LocalNameStandardizer; } protected void release_soot_jimple_toolkits_scalar_LocalNameStandardizer() {
/** * Make sure the locals in the given body all have unique String names. Renaming is done if necessary. **/ public void makeUniqueLocalNames() { if (options.standard_local_names()) { LocalNameStandardizer.v().transform(body); return; } Set<String> localNames = new HashSet<String>(); Iterator<Local> localsIt = body.getLocals().iterator(); while (localsIt.hasNext()) { Local local = localsIt.next(); String localName = local.getName(); if (localNames.contains(localName)) { String uniqueName = makeUniqueLocalName(localName, localNames); local.setName(uniqueName); localNames.add(uniqueName); } else { localNames.add(localName); } } }
int maxDigits = sortLocals ? digits(locals.size()) : 1; for (Local l : locals) { String prefix = l.getName().startsWith("$") ? "$" : ""; l.setName(genName(prefix, "z", intCount++, maxDigits)); } else if (type.equals(byteType)) { l.setName(genName(prefix, "b", longCount++, maxDigits)); } else if (type.equals(shortType)) { l.setName(genName(prefix, "s", longCount++, maxDigits)); } else if (type.equals(charType)) { l.setName(genName(prefix, "c", longCount++, maxDigits)); } else if (type.equals(intType)) { l.setName(genName(prefix, "i", longCount++, maxDigits)); } else if (type.equals(longType)) { l.setName(genName(prefix, "l", longCount++, maxDigits)); } else if (type.equals(doubleType)) { l.setName(genName(prefix, "d", doubleCount++, maxDigits)); } else if (type.equals(floatType)) { l.setName(genName(prefix, "f", floatCount++, maxDigits)); } else if (type.equals(stmtAddressType)) { l.setName(genName(prefix, "a", addressCount++, maxDigits)); } else if (type.equals(erroneousType) || type.equals(unknownType)) { l.setName(genName(prefix, "e", errorCount++, maxDigits)); } else if (type.equals(nullType)) { l.setName(genName(prefix, "n", nullCount++, maxDigits)); } else { l.setName(genName(prefix, "r", objectCount++, maxDigits));
p.add(new Transform("jb.tr", TypeAssigner.v())); p.add(new Transform("jb.ulp", LocalPacker.v())); p.add(new Transform("jb.lns", LocalNameStandardizer.v())); p.add(new Transform("jb.cp", CopyPropagator.v())); p.add(new Transform("jb.dae", DeadAssignmentEliminator.v())); p.add(new Transform("jj.lns", LocalNameStandardizer.v())); p.add(new Transform("jj.cp", CopyPropagator.v())); p.add(new Transform("jj.dae", DeadAssignmentEliminator.v()));
p.add(new Transform("jb.tr", TypeAssigner.v())); p.add(new Transform("jb.ulp", LocalPacker.v())); p.add(new Transform("jb.lns", LocalNameStandardizer.v())); p.add(new Transform("jb.cp", CopyPropagator.v())); p.add(new Transform("jb.dae", DeadAssignmentEliminator.v()));
@Override public Body getBody(SootMethod m, String phaseName) { if (!phaseName.equals("jb")) { throw new Error("unsupported body type: " + phaseName); } SootClass tclass = m.getDeclaringClass(); JimpleBody jb = Jimple.v().newBody(m); if (m.getName().equals("<init>")) { getInitBody(tclass, jb); } else if (m.getName().equals("bootstrap$")) { getBootstrapBody(tclass, jb); } else { getInvokeBody(tclass, jb); } // rename locals consistent with JimpleBodyPack LocalNameStandardizer.v().transform(jb); return jb; }
public soot.jimple.toolkits.scalar.LocalNameStandardizer soot_jimple_toolkits_scalar_LocalNameStandardizer() { if( instance_soot_jimple_toolkits_scalar_LocalNameStandardizer == null ) instance_soot_jimple_toolkits_scalar_LocalNameStandardizer = new soot.jimple.toolkits.scalar.LocalNameStandardizer( g ); return instance_soot_jimple_toolkits_scalar_LocalNameStandardizer; }
p.add(new Transform("jb.tr", TypeAssigner.v())); p.add(new Transform("jb.ulp", LocalPacker.v())); p.add(new Transform("jb.lns", LocalNameStandardizer.v())); p.add(new Transform("jb.cp", CopyPropagator.v())); p.add(new Transform("jb.dae", DeadAssignmentEliminator.v()));
public soot.jimple.toolkits.scalar.LocalNameStandardizer soot_jimple_toolkits_scalar_LocalNameStandardizer() { if( instance_soot_jimple_toolkits_scalar_LocalNameStandardizer == null ) instance_soot_jimple_toolkits_scalar_LocalNameStandardizer = new soot.jimple.toolkits.scalar.LocalNameStandardizer( g ); return instance_soot_jimple_toolkits_scalar_LocalNameStandardizer; }