1 19 20 25 26 27 package soot; 28 import soot.options.*; 29 30 import soot.jimple.*; 31 import java.util.*; 32 import soot.toolkits.scalar.*; 33 import soot.jimple.toolkits.scalar.*; 34 import soot.jimple.toolkits.typing.*; 35 import soot.jimple.toolkits.base.*; 36 import soot.options.JBOptions; 37 38 39 42 public class JavaToJimpleBodyPack extends BodyPack 43 { 44 public JavaToJimpleBodyPack() { 45 super("jj"); 46 } 47 48 49 50 private void applyPhaseOptions(JimpleBody b, Map opts) 51 { 52 JJOptions options = new JJOptions( opts ); 53 54 if(options.use_original_names()) 55 PhaseOptions.v().setPhaseOptionIfUnset( "jj.lns", "only-stack-locals"); 56 57 if(Options.v().time()) Timers.v().splitTimer.start(); 58 59 PackManager.v().getTransform( "jj.ls" ).apply( b ); 60 61 if(Options.v().time()) Timers.v().splitTimer.end(); 62 63 PackManager.v().getTransform( "jj.a" ).apply( b ); 64 PackManager.v().getTransform( "jj.ule" ).apply( b ); 65 PackManager.v().getTransform( "jj.ne" ).apply( b ); 66 67 if(Options.v().time()) Timers.v().assignTimer.start(); 68 69 PackManager.v().getTransform( "jj.tr" ).apply( b ); 70 71 if(Options.v().time()) Timers.v().assignTimer.end(); 72 73 if(options.use_original_names()) 74 { 75 PackManager.v().getTransform( "jj.ulp" ).apply( b ); 76 } 77 PackManager.v().getTransform( "jj.lns" ).apply( b ); 78 PackManager.v().getTransform( "jj.cp" ).apply( b ); 79 PackManager.v().getTransform( "jj.dae" ).apply( b ); 80 PackManager.v().getTransform( "jj.cp-ule" ).apply( b ); 81 PackManager.v().getTransform( "jj.lp" ).apply( b ); 82 PackManager.v().getTransform( "jj.uce" ).apply( b ); 84 85 if(Options.v().time()) 86 Timers.v().stmtCount += b.getUnits().size(); 87 } 88 89 90 protected void internalApply(Body b) 91 { 92 applyPhaseOptions( (JimpleBody) b, 93 PhaseOptions.v().getPhaseOptions( getPhaseName() ) ); 94 } 95 } 96 | Popular Tags |