1 19 20 package soot; 21 import soot.options.*; 22 import soot.jimple.*; 23 import java.io.*; 24 import java.util.*; 25 26 28 public class JimpleClassSource extends ClassSource 29 { 30 public JimpleClassSource( String className, InputStream classFile ) { 31 super( className ); 32 this.classFile = classFile; 33 } 34 public List resolve( SootClass sc ) { 35 if(Options.v().verbose()) 36 G.v().out.println("resolving [from .jimple]: " + className ); 37 38 soot.jimple.parser.JimpleAST jimpAST = 39 new soot.jimple.parser.JimpleAST(classFile); 40 jimpAST.getSkeleton(sc); 41 JimpleMethodSource mtdSrc = new JimpleMethodSource(jimpAST); 42 43 Iterator mtdIt = sc.methodIterator(); 44 while(mtdIt.hasNext()) { 45 SootMethod sm = (SootMethod) mtdIt.next(); 46 sm.setSource(mtdSrc); 47 } 48 49 List ret = new ArrayList(jimpAST.getCstPool()); 50 51 try { 52 classFile.close(); 53 } catch (IOException e) { throw new RuntimeException ("!?"); } 54 return ret; 55 } 56 protected InputStream classFile; 57 } 58 59 | Popular Tags |