1 19 20 package soot.jimple.toolkits.annotation; 21 import soot.*; 22 import java.util.*; 23 import soot.toolkits.graph.*; 24 import soot.toolkits.scalar.*; 25 import soot.tagkit.*; 26 import soot.jimple.*; 27 import soot.options.*; 28 import soot.util.*; 29 import soot.jimple.toolkits.pointer.*; 30 import soot.jimple.toolkits.scalar.*; 31 32 34 public class AvailExprTagger extends BodyTransformer 35 { 36 public AvailExprTagger( Singletons.Global g ) {} 37 public static AvailExprTagger v() { return G.v().soot_jimple_toolkits_annotation_AvailExprTagger(); } 38 39 protected void internalTransform( 40 Body b, String phaseName, Map opts) 41 { 42 43 SideEffectTester sideEffect; 44 if( Scene.v().hasCallGraph() 45 && !PhaseOptions.getBoolean( opts, "naive-side-effect" ) ) { 46 sideEffect = new PASideEffectTester(); 47 } 48 else { 49 sideEffect = new NaiveSideEffectTester(); 50 } 51 sideEffect.newMethod( b.getMethod() ); 52 53 SlowAvailableExpressionsAnalysis analysis; 54 55 AETOptions options = new AETOptions(opts); 56 if (options.kind() == AETOptions.kind_optimistic){ 57 analysis = new SlowAvailableExpressionsAnalysis(new ExceptionalUnitGraph(b)); 58 } 59 else { 60 analysis = new PessimisticAvailableExpressionsAnalysis(new ExceptionalUnitGraph(b), b.getMethod(), sideEffect); 61 } 62 } 63 } 64 65 66 | Popular Tags |