public class ArithmeticOperation extends AbstractExpression implements BoxingProcessor
| Modifier and Type | Field and Description |
|---|---|
private Expression |
lhs |
private ArithOp |
op |
private Expression |
rhs |
| Constructor and Description |
|---|
ArithmeticOperation(BytecodeLoc loc,
Expression lhs,
Expression rhs,
ArithOp op) |
ArithmeticOperation(BytecodeLoc loc,
InferredJavaType knownType,
Expression lhs,
Expression rhs,
ArithOp op) |
addLoc, dump, dumpWithOuterPrecedence, getInferredJavaType, getLoc, isSimple, isValidStatement, outerDeepClone, toStringprivate Expression lhs
private Expression rhs
private final ArithOp op
public ArithmeticOperation(BytecodeLoc loc, Expression lhs, Expression rhs, ArithOp op)
public ArithmeticOperation(BytecodeLoc loc, InferredJavaType knownType, Expression lhs, Expression rhs, ArithOp op)
public BytecodeLoc getCombinedLoc()
getCombinedLoc in interface HasByteCodeLocpublic void collectTypeUsages(TypeUsageCollector collector)
collectTypeUsages in interface TypeUsageCollectablecollectTypeUsages in class AbstractExpressionpublic Expression deepClone(CloneHelper cloneHelper)
deepClone in interface DeepCloneable<Expression>private static InferredJavaType inferredType(InferredJavaType a, InferredJavaType b, ArithOp op)
public Precedence getPrecedence()
getPrecedence in interface DumpableWithPrecedencegetPrecedence in class AbstractExpressionpublic Dumper dumpInner(Dumper d)
dumpInner in class AbstractExpressionpublic Literal getComputedLiteral(java.util.Map<LValue,Literal> display)
getComputedLiteral in interface ExpressiongetComputedLiteral in class AbstractExpressionprivate boolean isLValueExprFor(LValueExpression expression, LValue lValue)
public boolean isLiteralFunctionOf(LValue lValue)
public boolean isXorM1()
public Expression getReplacementXorM1()
public boolean isMutationOf(LValue lValue)
public AbstractMutatingAssignmentExpression getMutationOf(LValue lValue)
public Expression replaceSingleUsageLValues(LValueRewriter lValueRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer)
replaceSingleUsageLValues in interface Expressionpublic Expression applyExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)
applyExpressionRewriter in interface Expressionpublic Expression applyReverseExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)
applyReverseExpressionRewriter in interface Expressionpublic void collectUsedLValues(LValueUsageCollector lValueUsageCollector)
collectUsedLValues in interface Expressionpublic boolean canPushDownInto()
canPushDownInto in interface ExpressioncanPushDownInto in class AbstractExpressionpublic boolean equals(java.lang.Object o)
equals in class AbstractExpressionpublic final boolean equivalentUnder(java.lang.Object o,
EquivalenceConstraint constraint)
equivalentUnder in interface ExpressionequivalentUnder in interface ComparableUnderECprivate static boolean returnsTrueForNaN(CompOp from, int on, boolean nanG)
private static boolean canNegateAroundNaN(CompOp from, int on)
public boolean canThrow(ExceptionCheck caught)
canThrow in interface ExpressioncanThrow in class AbstractExpressionpublic boolean rewriteBoxing(PrimitiveBoxingRewriter boxingRewriter)
rewriteBoxing in interface BoxingProcessorpublic void applyNonArgExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)
applyNonArgExpressionRewriter in interface BoxingProcessorpublic Expression getLhs()
public Expression getRhs()
public ArithOp getOp()
public <T> T visit(ExpressionVisitor<T> visitor)
visit in interface Expressionvisit in class AbstractExpressionpublic Expression pushDown(Expression toPush, Expression parent)
pushDown in interface ExpressionpushDown in class AbstractExpression