public soot.PhaseOptions soot_PhaseOptions() { if (instance_soot_PhaseOptions == null) { synchronized (this) { if (instance_soot_PhaseOptions == null) instance_soot_PhaseOptions = new soot.PhaseOptions(g); } } return instance_soot_PhaseOptions; } protected void release_soot_PhaseOptions() {
public void setPhaseOptionIfUnset(String phaseName, String option) { Map<String, String> optionMap = mapForPhase(phaseName); if (optionMap == null) { throw new RuntimeException("No such phase " + phaseName); } if (optionMap.containsKey(getKey(option))) { return; } if (!declaresOption(phaseName, getKey(option))) { throw new RuntimeException("No option " + option + " for phase " + phaseName); } optionMap.put(getKey(option), getValue(option)); }
public final void apply() { Map<String, String> options = PhaseOptions.v().getPhaseOptions(this); if (!PhaseOptions.getBoolean(options, "enabled")) { return; } internalApply(); }
private void checkEnabled(Transform t) { Map<String, String> options = PhaseOptions.v().getPhaseOptions(t); if (PhaseOptions.getBoolean(options, "enabled")) { // Enabling this one will disable all the others PhaseOptions.v().setPhaseOption(t, "enabled:true"); } } }
public boolean setPhaseOption(HasPhaseOptions phase, String option) { Map<String, String> optionMap = mapForPhase(phase); if (!checkParentEnabled(phase.getPhaseName())) { return false; } if (optionMap == null) { logger.debug("" + "Option " + option + " given for nonexistent" + " phase " + phase.getPhaseName()); return false; } String key = getKey(option); if (key.equals("enabled") && getValue(option).equals("true")) { resetRadioPack(phase.getPhaseName()); } if (declaresOption(phase, key)) { optionMap.put(key, getValue(option)); return true; } logger.debug("" + "Invalid option " + option + " for phase " + phase.getPhaseName()); return false; }
/** Returns a BafBody constructed from b. */ public BafBody newBody(JimpleBody b, String phase) { Map<String, String> options = PhaseOptions.v().getPhaseOptions(phase); return new BafBody(b, options); } }
public boolean setPhaseOption(String phaseName, String option) { HasPhaseOptions phase = getPM().getPhase(phaseName); if (phase == null) { logger.debug("" + "Option " + option + " given for nonexistent" + " phase " + phaseName); return false; } return setPhaseOption(phase, option); }
boolean enableNullPointerCheckInsertion = PhaseOptions.getBoolean(options, "insert-null-checks"); boolean enableRedundantCastInsertion = PhaseOptions.getBoolean(options, "insert-redundant-casts"); String modifierOptions = PhaseOptions.getString(options, "allowed-modifier-changes"); float expansionFactor = PhaseOptions.getFloat(options, "expansion-factor"); int maxContainerSize = PhaseOptions.getInt(options, "max-container-size"); int maxInlineeSize = PhaseOptions.getInt(options, "max-inlinee-size"); boolean rerunJb = PhaseOptions.getBoolean(options, "rerun-jb");
/** * Context length (k) * The maximum length of call string or receiver object string used * as context. */ public int k() { return soot.PhaseOptions.getInt(options, "k"); }
/** * Verbose dump file -- * Filename for detailed execution log. * * If you want to save the geomPTA analysis information for future * analysis, please provide a file name. */ public String geom_dump_verbose() { return soot.PhaseOptions.getString(options, "geom-dump-verbose"); }
/** * Profile -- * Profile BDDs using JeddProfiler. * * Turns on JeddProfiler for profiling BDD operations. */ public boolean profile() { return soot.PhaseOptions.getBoolean(options, "profile"); }
private boolean declaresOption(String phaseName, String option) { HasPhaseOptions phase = getPM().getPhase(phaseName); return declaresOption(phase, option); }
public Map<String, String> getPhaseOptions(HasPhaseOptions phase) { Map<String, String> ret = phaseToOptionMap.get(phase); if (ret == null) { ret = new HashMap<String, String>(); } else { ret = new HashMap<String, String>(ret); } StringTokenizer st = new StringTokenizer(phase.getDefaultOptions()); while (st.hasMoreTokens()) { String opt = st.nextToken(); String key = getKey(opt); String value = getValue(opt); if (!ret.containsKey(key)) { ret.put(key, value); } } return Collections.unmodifiableMap(ret); }
private Map<String, String> mapForPhase(String phaseName) { HasPhaseOptions phase = getPM().getPhase(phaseName); if (phase == null) { return null; } return mapForPhase(phase); }
public Map<String, String> getPhaseOptions(String phaseName) { return getPhaseOptions(getPM().getPhase(phaseName)); }
private void initialize(Map<String, String> options) { if (drawer == null) { drawer = new CFGToDotGraph(); drawer.setBriefLabels(PhaseOptions.getBoolean(options, briefLabelOptionName)); drawer.setOnePage(!PhaseOptions.getBoolean(options, multipageOptionName)); drawer.setUnexceptionalControlFlowAttr("color", "black"); drawer.setExceptionalControlFlowAttr("color", "red"); drawer.setExceptionEdgeAttr("color", "lightgray"); drawer.setShowExceptions(Options.v().show_exception_dests()); ir = CFGIntermediateRep.getIR(PhaseOptions.getString(options, irOptionName)); graphtype = CFGGraphType.getGraphType(PhaseOptions.getString(options, graphTypeOptionName)); AltClassLoader.v().setAltClassPath(PhaseOptions.getString(options, altClassPathOptionName)); AltClassLoader.v() .setAltClasses(new String[] { "soot.toolkits.graph.ArrayRefBlockGraph", "soot.toolkits.graph.Block", "soot.toolkits.graph.Block$AllMapTo", "soot.toolkits.graph.BlockGraph", "soot.toolkits.graph.BriefBlockGraph", "soot.toolkits.graph.BriefUnitGraph", "soot.toolkits.graph.CompleteBlockGraph", "soot.toolkits.graph.CompleteUnitGraph", "soot.toolkits.graph.TrapUnitGraph", "soot.toolkits.graph.UnitGraph", "soot.toolkits.graph.ZonedBlockGraph", }); } }
/** * Expansion Factor * Determines the maximum allowed expansion of a method. Inlining * will cause the method to grow by a factor of no more than the * Expansion Factor. */ public float expansion_factor() { return soot.PhaseOptions.getFloat(options, "expansion-factor"); }
public boolean setPhaseOption( HasPhaseOptions phase, String option ) { Map<String, String> optionMap = mapForPhase( phase ); if( !checkParentEnabled( phase.getPhaseName() ) ) return false; if( optionMap == null ) { G.v().out.println( "Option "+option+" given for nonexistent" +" phase "+phase.getPhaseName() ); return false; } String key = getKey( option ); if( key.equals( "enabled" ) && getValue( option ).equals( "true" ) ) { resetRadioPack( phase.getPhaseName() ); } if( declaresOption( phase, key ) ) { optionMap.put( key, getValue( option ) ); return true; } G.v().out.println( "Invalid option "+option+" for phase "+phase.getPhaseName() ); return false; }
/** * Returns an empty ShimpleBody associated with method m, using default phase options. **/ public ShimpleBody newBody(SootMethod m) { Map<String, String> options = PhaseOptions.v().getPhaseOptions(PHASE); return new ShimpleBody(m, options); }