package cute.instrument;
import soot.Value;
import soot.SootMethodRef;
import soot.Scene;
import soot.jimple.Stmt;
import soot.jimple.Jimple;
import soot.jimple.IntConstant;
import soot.util.Chain;
/**
* .
* User: Koushik Sen (ksen@cs.uiuc.edu)
* Date: Nov 7, 2005
* Time: 5:28:11 PM
*/
public class AddCallWithObject {
public static void instrument(Value v,Chain units,Stmt s,String methodName,boolean before,int lineNo){
SootMethodRef mr = null;
mr = Scene.v().getMethod("<cute.concolic.Call: void "+methodName+"(java.lang.Object,int)>").makeRef();
if(before){
units.insertBefore(Jimple.v().newInvokeStmt(Jimple.v().newStaticInvokeExpr(mr,v,IntConstant.v(lineNo))),s);
} else {
units.insertAfter(Jimple.v().newInvokeStmt(Jimple.v().newStaticInvokeExpr(mr,v,IntConstant.v(lineNo))),s);
}
}
}