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 JimpleBodyPack extends BodyPack 43 { 44 public JimpleBodyPack() { 45 super("jb"); 46 } 47 48 49 50 private void applyPhaseOptions(JimpleBody b, Map opts) 51 { 52 JBOptions options = new JBOptions( opts ); 53 54 if(options.use_original_names()) 55 PhaseOptions.v().setPhaseOptionIfUnset( "jb.lns", "only-stack-locals"); 56 57 if(Options.v().time()) Timers.v().splitTimer.start(); 58 59 PackManager.v().getTransform( "jb.tt" ).apply( b ); 60 61 PackManager.v().getTransform( "jb.ls" ).apply( b ); 62 63 if(Options.v().time()) Timers.v().splitTimer.end(); 64 65 PackManager.v().getTransform( "jb.a" ).apply( b ); 66 PackManager.v().getTransform( "jb.ule" ).apply( b ); 67 68 if(Options.v().time()) Timers.v().assignTimer.start(); 69 70 PackManager.v().getTransform( "jb.tr" ).apply( b ); 71 72 if(Options.v().time()) Timers.v().assignTimer.end(); 73 74 if(options.use_original_names()) 75 { 76 PackManager.v().getTransform( "jb.ulp" ).apply( b ); 77 } 78 PackManager.v().getTransform( "jb.lns" ).apply( b ); 79 PackManager.v().getTransform( "jb.cp" ).apply( b ); 80 PackManager.v().getTransform( "jb.dae" ).apply( b ); 81 PackManager.v().getTransform( "jb.cp-ule" ).apply( b ); 82 PackManager.v().getTransform( "jb.lp" ).apply( b ); 83 PackManager.v().getTransform( "jb.ne" ).apply( b ); 84 PackManager.v().getTransform( "jb.uce" ).apply( b ); 85 86 if(Options.v().time()) 87 Timers.v().stmtCount += b.getUnits().size(); 88 } 89 90 91 protected void internalApply(Body b) 92 { 93 applyPhaseOptions( (JimpleBody) b, 94 PhaseOptions.v().getPhaseOptions( getPhaseName() ) ); 95 } 96 } 97 | Popular Tags |