package cute.instrument; import soot.jimple.Stmt; import soot.jimple.ReturnStmt; import soot.jimple.Jimple; import soot.jimple.IntConstant; import soot.util.Chain; import soot.Value; import soot.SootMethodRef; import soot.Scene; /** * . * User: Koushik Sen (ksen@cs.uiuc.edu) * Date: Nov 7, 2005 * Time: 6:15:22 PM */ public class InstrumentReturnStatement { public static void instrument(Stmt s,Chain units,SymbolTable st,int lineNo) { Value varg = ((ReturnStmt)s).getOp(); SootMethodRef mr = Scene.v().getMethod("<cute.concolic.Call: void popAll(int)>").makeRef(); units.insertBefore(Jimple.v().newInvokeStmt(Jimple.v().newStaticInvokeExpr(mr,IntConstant.v(lineNo))),s); AddCallWithAddress.instrument(varg,units,s,"setReturn",true,st,lineNo,false); } }