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());
    }
}