private boolean isFloat(soot.Value val) { if (val.getType() instanceof soot.FloatType) { return true; } return false; }
public boolean isAllShared(boolean refsOnly) { for (int i = 0; i < nodes.size(); i++) { if ((!refsOnly) && isNodeLocal.get(i).booleanValue()) { return false; } else if (((EquivalentValue) nodes.get(i)).getValue().getType() instanceof RefLikeType && isNodeLocal.get(i).booleanValue()) { return false; } } return true; }
public Type getType() { Value op1 = op1Box.getValue(); Value op2 = op2Box.getValue(); if (isIntLikeType(op1.getType()) && isIntLikeType(op2.getType())) { return IntType.v(); } else if (op1.getType().equals(LongType.v()) && op2.getType().equals(LongType.v())) { return LongType.v(); } else { return UnknownType.v(); } } }
@Override public void caseIdentityStmt(IdentityStmt stmt) { if (stmt.getLeftOp() == l) { usedAsObject = isObject(stmt.getRightOp().getType()); doBreak = true; return; } } };
@Override public void caseIdentityStmt(IdentityStmt stmt) { if (stmt.getLeftOp() == l) { usedAsObject = isObject(stmt.getRightOp().getType()); if (usedAsObject) { doBreak = true; } return; } } });
@Override public void caseAssignStmt(AssignStmt s) { Value lhs = s.getLeftOp(); if (lhs instanceof ArrayRef && (lhs.getType() instanceof UnknownType || lhs.getType() instanceof RefType)) { // This corresponds to an aastore byte code. result = result.add(mgr.ARRAY_STORE_EXCEPTION); } result = result.add(mightThrow(s.getLeftOp())); result = result.add(mightThrow(s.getRightOp())); }
protected void checkThrow(Body b, ThrowStmt ts) { if (isThrowDeclared(b, ((RefType) ts.getOp().getType()).getSootClass()) || isThrowFromCompiler(ts) || isExceptionCaught(b, ts, (RefType) ts.getOp().getType())) { return; } if (reporter != null) { reporter.reportError(new ExceptionCheckerError(b.getMethod(), ((RefType) ts.getOp().getType()).getSootClass(), ts, (SourceLnPosTag) ts.getOpBox().getTag("SourceLnPosTag"))); } }
public void caseCmpgExpr(CmpgExpr v) { emitValue(v.getOp1()); emitValue(v.getOp2()); if (v.getOp1().getType().equals(FloatType.v())) { emit("fcmpg", -1); } else { emit("dcmpg", -3); } }
public void convertToBaf(JimpleToBafContext context, List<Unit> out) { ((ConvertToBaf) this.getOp1()).convertToBaf(context, out); ((ConvertToBaf) this.getOp2()).convertToBaf(context, out); Unit u = (Unit) makeBafInst(this.getOp1().getType()); out.add(u); u.addAllTagsOf(context.getCurrentUnit()); }
public void convertToBaf(JimpleToBafContext context, List<Unit> out) { ((ConvertToBaf) this.getOp1()).convertToBaf(context, out); ((ConvertToBaf) this.getOp2()).convertToBaf(context, out); Unit u = (Unit) makeBafInst(this.getOp1().getType()); out.add(u); u.addAllTagsOf(context.getCurrentUnit()); }
public void caseCmplExpr(CmplExpr v) { emitValue(v.getOp1()); emitValue(v.getOp2()); if (v.getOp1().getType().equals(FloatType.v())) { emit("fcmpl", -1); } else { emit("dcmpl", -3); } }
@Override final public void caseReturnStmt(ReturnStmt rs) { if (!(rs.getOp().getType() instanceof RefLikeType)) { return; } rs.getOp().apply(MethodNodeFactory.this); Node retNode = getNode(); mpag.addInternalEdge(retNode, caseRet()); }
@Override public void caseGeExpr(GeExpr expr) { add(Baf.v().newIfCmpGeInst(op1.getType(), Baf.v().newPlaceholderInst(getTarget()))); } });
public void caseIdentityStmt(IdentityStmt stmt) { Value l = stmt.getLeftOp(); Value r = stmt.getRightOp(); if (l instanceof Local) { if (((Local) l).getType() instanceof IntegerType) { TypeVariable left = resolver.typeVariable((Local) l); TypeVariable right = resolver.typeVariable(r.getType()); right.addParent(left); } } }
@Override public void caseLtExpr(LtExpr expr) { add(Baf.v().newIfCmpLtInst(op1.getType(), Baf.v().newPlaceholderInst(getTarget()))); }
@Override public void caseGtExpr(GtExpr expr) { add(Baf.v().newIfCmpGtInst(op1.getType(), Baf.v().newPlaceholderInst(getTarget()))); }
@Override final public void caseInstanceFieldRef(InstanceFieldRef ifr) { if (pag.getOpts().field_based() || pag.getOpts().vta()) { setResult(pag.makeGlobalVarNode(ifr.getField(), ifr.getField().getType())); } else { setResult(pag.makeLocalFieldRefNode(ifr.getBase(), ifr.getBase().getType(), ifr.getField(), method)); } }