Java 类soot.jimple.internal.JVirtualInvokeExpr 实例源码
项目:petablox
文件:RelVirtIM.java
public void fill() {
DomI domI = (DomI) doms[0];
DomM domM = (DomM) doms[1];
int numI = domI.size();
for (int iIdx = 0; iIdx < numI; iIdx++) {
Unit i = (Unit)domI.get(iIdx);
if(i instanceof Stmt){
Stmt s = (Stmt)i;
if(s.containsInvokeExpr()){
InvokeExpr ie = s.getInvokeExpr();
if(ie instanceof JVirtualInvokeExpr || ie instanceof JInterfaceInvokeExpr){
SootMethod m = s.getInvokeExpr().getMethod();
int mIdx = domM.indexOf(m);
if (mIdx >= 0)
add(iIdx, mIdx);
else if (Config.verbose >= 2)
Messages.log(NOT_FOUND, m, SootUtilities.toLocStr(i));
}
}
}
}
}
项目:petablox
文件:SootUtilities.java
public static boolean isVirtualInvoke(Unit q){
assert (q instanceof JInvokeStmt || q instanceof JAssignStmt);
InvokeExpr ie;
if (q instanceof JInvokeStmt)
ie = ((JInvokeStmt)q).getInvokeExpr();
else if (q instanceof JAssignStmt)
ie = ((InvokeExpr)(((JAssignStmt)q).rightBox.getValue()));
else
ie = null;
return ie != null && ie instanceof JVirtualInvokeExpr;
}
项目:petablox
文件:RelVirtualInvoke.java
public void visit(InvokeExpr e) {
if (e instanceof JVirtualInvokeExpr) {
JVirtualInvokeExpr ex = (JVirtualInvokeExpr) e;
add(e, ex.getBase(), ex.getMethod());
}
}