public soot.toolkits.exceptions.PedanticThrowAnalysis soot_toolkits_exceptions_PedanticThrowAnalysis() { if (instance_soot_toolkits_exceptions_PedanticThrowAnalysis == null) { synchronized (this) { if (instance_soot_toolkits_exceptions_PedanticThrowAnalysis == null) instance_soot_toolkits_exceptions_PedanticThrowAnalysis = new soot.toolkits.exceptions.PedanticThrowAnalysis(g); } } return instance_soot_toolkits_exceptions_PedanticThrowAnalysis; } protected void release_soot_toolkits_exceptions_PedanticThrowAnalysis() {
public CompleteUnitGraph(Body b) { super(b, PedanticThrowAnalysis.v(), false); } }
/** * Resolve the ThrowAnalysis to be used for initialization checking (e.g. soot.Body.checkInit()) * */ public static ThrowAnalysis checkInitThrowAnalysis() { switch (Options.v().check_init_throw_analysis()) { case soot.options.Options.check_init_throw_analysis_auto: if (!Options.v().android_jars().equals("") || !Options.v().force_android_jar().equals("")) { // If Android related options are set, use 'dalvik' throw // analysis. return DalvikThrowAnalysis.v(); } else { return PedanticThrowAnalysis.v(); } case soot.options.Options.check_init_throw_analysis_pedantic: return PedanticThrowAnalysis.v(); case soot.options.Options.check_init_throw_analysis_unit: return UnitThrowAnalysis.v(); case soot.options.Options.check_init_throw_analysis_dalvik: return DalvikThrowAnalysis.v(); default: assert false; // The above cases should cover all posible options return PedanticThrowAnalysis.v(); } } }
public soot.toolkits.exceptions.PedanticThrowAnalysis soot_toolkits_exceptions_PedanticThrowAnalysis() { if( instance_soot_toolkits_exceptions_PedanticThrowAnalysis == null ) instance_soot_toolkits_exceptions_PedanticThrowAnalysis = new soot.toolkits.exceptions.PedanticThrowAnalysis( g ); return instance_soot_toolkits_exceptions_PedanticThrowAnalysis; }
= new ExceptionalUnitGraph(unitBody, PedanticThrowAnalysis.v(), Options.v().omit_excepting_unit_edges()); LiveLocals liveLocals;
public soot.toolkits.exceptions.PedanticThrowAnalysis soot_toolkits_exceptions_PedanticThrowAnalysis() { if( instance_soot_toolkits_exceptions_PedanticThrowAnalysis == null ) instance_soot_toolkits_exceptions_PedanticThrowAnalysis = new soot.toolkits.exceptions.PedanticThrowAnalysis( g ); return instance_soot_toolkits_exceptions_PedanticThrowAnalysis; }
= new ExceptionalUnitGraph(unitBody, PedanticThrowAnalysis.v(), Options.v().omit_excepting_unit_edges());
/** * Returns the {@link ThrowAnalysis} to be used by default when constructing CFGs which include exceptional control flow. * * @return the default {@link ThrowAnalysis} */ public ThrowAnalysis getDefaultThrowAnalysis() { if (defaultThrowAnalysis == null) { int optionsThrowAnalysis = Options.v().throw_analysis(); switch (optionsThrowAnalysis) { case Options.throw_analysis_pedantic: defaultThrowAnalysis = PedanticThrowAnalysis.v(); break; case Options.throw_analysis_unit: defaultThrowAnalysis = UnitThrowAnalysis.v(); break; case Options.throw_analysis_dalvik: defaultThrowAnalysis = DalvikThrowAnalysis.v(); break; default: throw new IllegalStateException("Options.v().throw_analysi() == " + Options.v().throw_analysis()); } } return defaultThrowAnalysis; }
ThrowAnalysis throwAnalysis = PedanticThrowAnalysis.v(); UnitGraph g = new ExceptionalUnitGraph(body, throwAnalysis, false); LocalDefs ld = LocalDefs.Factory.newLocalDefs(g, true);
this.throwAnalysis = PhaseOptions.getBoolean(options, "remove-unreachable-traps", true) ? Scene.v().getDefaultThrowAnalysis() : PedanticThrowAnalysis.v();
public CompleteUnitGraph(Body b) { super(b, PedanticThrowAnalysis.v(), false); } }
public CompleteUnitGraph(Body b) { super(b, PedanticThrowAnalysis.v(), false); } }
@SuppressWarnings("unchecked") public void checkInit() { Chain<Unit> units=getUnits(); ExceptionalUnitGraph g = new ExceptionalUnitGraph (this, PedanticThrowAnalysis.v(), false); // FIXME: Work around for bug in soot Scene.v().releaseActiveHierarchy(); InitAnalysis analysis=new InitAnalysis(g); Iterator<Unit> it=units.iterator(); while(it.hasNext()) { Unit s=(it.next()); FlowSet init=(FlowSet) analysis.getFlowBefore(s); List<ValueBox> uses=s.getUseBoxes(); Iterator<ValueBox> usesIt=uses.iterator(); while(usesIt.hasNext()) { Value v=((usesIt.next())).getValue(); if(v instanceof Local) { Local l=(Local) v; if(!init.contains(l)) throw new RuntimeException("Warning: Local variable "+l +" not definitely defined at "+s +" in "+method); } } } }
@SuppressWarnings("unchecked") public void checkInit() { Chain<Unit> units=getUnits(); ExceptionalUnitGraph g = new ExceptionalUnitGraph (this, PedanticThrowAnalysis.v(), false); // FIXME: Work around for bug in soot Scene.v().releaseActiveHierarchy(); InitAnalysis analysis=new InitAnalysis(g); Iterator<Unit> it=units.iterator(); while(it.hasNext()) { Unit s=(it.next()); FlowSet init=(FlowSet) analysis.getFlowBefore(s); List<ValueBox> uses=s.getUseBoxes(); Iterator<ValueBox> usesIt=uses.iterator(); while(usesIt.hasNext()) { Value v=((usesIt.next())).getValue(); if(v instanceof Local) { Local l=(Local) v; if(!init.contains(l)) throw new RuntimeException("Warning: Local variable "+l +" not definitely defined at "+s +" in "+method); } } } }
/** * Returns the {@link ThrowAnalysis} to be used by default when * constructing CFGs which include exceptional control flow. * * @return the default {@link ThrowAnalysis} */ public ThrowAnalysis getDefaultThrowAnalysis() { if( defaultThrowAnalysis == null ) { int optionsThrowAnalysis = Options.v().throw_analysis(); switch (optionsThrowAnalysis) { case Options.throw_analysis_pedantic: defaultThrowAnalysis = PedanticThrowAnalysis.v(); break; case Options.throw_analysis_unit: defaultThrowAnalysis = UnitThrowAnalysis.v(); break; default: throw new IllegalStateException("Options.v().throw_analysi() == " + Options.v().throw_analysis()); } } return defaultThrowAnalysis; }
/** * Returns the {@link ThrowAnalysis} to be used by default when * constructing CFGs which include exceptional control flow. * * @return the default {@link ThrowAnalysis} */ public ThrowAnalysis getDefaultThrowAnalysis() { if( defaultThrowAnalysis == null ) { int optionsThrowAnalysis = Options.v().throw_analysis(); switch (optionsThrowAnalysis) { case Options.throw_analysis_pedantic: defaultThrowAnalysis = PedanticThrowAnalysis.v(); break; case Options.throw_analysis_unit: defaultThrowAnalysis = UnitThrowAnalysis.v(); break; default: throw new IllegalStateException("Options.v().throw_analysi() == " + Options.v().throw_analysis()); } } return defaultThrowAnalysis; }
stmtGraph = new ExceptionalUnitGraph(body, PedanticThrowAnalysis.v(), false);
stmtGraph = new ExceptionalUnitGraph(body, PedanticThrowAnalysis.v(), false);