ThrowableSet mightThrow(Value v) { ValueSwitch sw = new ValueSwitch(); v.apply(sw); return sw.getResult(); }
public void caseRemExpr(RemExpr expr) { caseBinopDivExpr(expr); }
private void caseBinopDivExpr(BinopExpr expr) { // Factors out code common to caseDivExpr and caseRemExpr. // The checks against constant divisors would perhaps be // better performed in a later pass, post-constant-propagation. Value divisor = expr.getOp2(); Type divisorType = divisor.getType(); if (divisorType instanceof UnknownType) { result = result.add(mgr.ARITHMETIC_EXCEPTION); } else if ((divisorType instanceof IntegerType) && ((! (divisor instanceof IntConstant)) || (((IntConstant) divisor).equals(INT_CONSTANT_ZERO)))) { result = result.add(mgr.ARITHMETIC_EXCEPTION); } else if ((divisorType == LongType.v()) && ((! (divisor instanceof LongConstant)) || (((LongConstant) divisor).equals(LONG_CONSTANT_ZERO)))) { result = result.add(mgr.ARITHMETIC_EXCEPTION); } caseBinopExpr(expr); }
private void caseBinopDivExpr(BinopExpr expr) { // Factors out code common to caseDivExpr and caseRemExpr. // The checks against constant divisors would perhaps be // better performed in a later pass, post-constant-propagation. Value divisor = expr.getOp2(); Type divisorType = divisor.getType(); if (divisorType instanceof UnknownType) { result = result.add(mgr.ARITHMETIC_EXCEPTION); } else if ((divisorType instanceof IntegerType) && ((! (divisor instanceof IntConstant)) || (((IntConstant) divisor).equals(INT_CONSTANT_ZERO)))) { result = result.add(mgr.ARITHMETIC_EXCEPTION); } else if ((divisorType == LongType.v()) && ((! (divisor instanceof LongConstant)) || (((LongConstant) divisor).equals(LONG_CONSTANT_ZERO)))) { result = result.add(mgr.ARITHMETIC_EXCEPTION); } caseBinopExpr(expr); }
public void caseXorExpr(XorExpr expr) { caseBinopExpr(expr); }
public void caseSubExpr(SubExpr expr) { caseBinopExpr(expr); }
public void caseShrExpr(ShrExpr expr) { caseBinopExpr(expr); }
public void caseShlExpr(ShlExpr expr) { caseBinopExpr(expr); }
public void caseGtExpr(GtExpr expr) { caseBinopExpr(expr); }
public void caseCmpgExpr(CmpgExpr expr) { caseBinopExpr(expr); }
public void caseLtExpr(LtExpr expr) { caseBinopExpr(expr); }
public void caseCmpExpr(CmpExpr expr) { caseBinopExpr(expr); }
public void caseAndExpr(AndExpr expr) { caseBinopExpr(expr); }
public void caseNewInvokeExpr(NewInvokeExpr e) { caseStaticInvokeExpr(e); }
public void caseLeExpr(LeExpr expr) { caseBinopExpr(expr); }
public void caseEqExpr(EqExpr expr) { caseBinopExpr(expr); }
public void caseCmplExpr(CmplExpr expr) { caseBinopExpr(expr); }
public void caseSpecialInvokeExpr(SpecialInvokeExpr expr) { caseInstanceInvokeExpr(expr); }
public void caseOrExpr(OrExpr expr) { caseBinopExpr(expr); }
public void caseInterfaceInvokeExpr(InterfaceInvokeExpr expr) { caseInstanceInvokeExpr(expr); }