Class ArithmeticOperation
java.lang.Object
org.benf.cfr.reader.bytecode.analysis.parse.expression.AbstractExpression
org.benf.cfr.reader.bytecode.analysis.parse.expression.ArithmeticOperation
- All Implemented Interfaces:
HasByteCodeLoc
,Expression
,BoxingProcessor
,DeepCloneable<Expression>
,ComparableUnderEC
,Dumpable
,DumpableWithPrecedence
,TypeUsageCollectable
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionArithmeticOperation
(BytecodeLoc loc, Expression lhs, Expression rhs, ArithOp op) ArithmeticOperation
(BytecodeLoc loc, InferredJavaType knownType, Expression lhs, Expression rhs, ArithOp op) -
Method Summary
Modifier and TypeMethodDescriptionapplyExpressionRewriter
(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) void
applyNonArgExpressionRewriter
(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) applyReverseExpressionRewriter
(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) private static boolean
canNegateAroundNaN
(CompOp from, int on) boolean
boolean
canThrow
(ExceptionCheck caught) void
collectTypeUsages
(TypeUsageCollector collector) void
collectUsedLValues
(LValueUsageCollector lValueUsageCollector) deepClone
(CloneHelper cloneHelper) boolean
final boolean
equivalentUnder
(Object o, EquivalenceConstraint constraint) getComputedLiteral
(Map<LValue, Literal> display) getLhs()
getMutationOf
(LValue lValue) getOp()
getRhs()
private static InferredJavaType
inferredType
(InferredJavaType a, InferredJavaType b, ArithOp op) boolean
isLiteralFunctionOf
(LValue lValue) private boolean
isLValueExprFor
(LValueExpression expression, LValue lValue) boolean
isMutationOf
(LValue lValue) boolean
isXorM1()
pushDown
(Expression toPush, Expression parent) replaceSingleUsageLValues
(LValueRewriter lValueRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer) private static boolean
returnsTrueForNaN
(CompOp from, int on, boolean nanG) boolean
rewriteBoxing
(PrimitiveBoxingRewriter boxingRewriter) private static CompOp
rewriteXCMPCompOp
(CompOp from, int on) <T> T
visit
(ExpressionVisitor<T> visitor) Methods inherited from class org.benf.cfr.reader.bytecode.analysis.parse.expression.AbstractExpression
addLoc, dump, dumpWithOuterPrecedence, getInferredJavaType, getLoc, isSimple, isValidStatement, outerDeepClone, toString
-
Field Details
-
lhs
-
rhs
-
op
-
-
Constructor Details
-
ArithmeticOperation
-
ArithmeticOperation
public ArithmeticOperation(BytecodeLoc loc, InferredJavaType knownType, Expression lhs, Expression rhs, ArithOp op)
-
-
Method Details
-
getCombinedLoc
- Specified by:
getCombinedLoc
in interfaceHasByteCodeLoc
-
collectTypeUsages
- Specified by:
collectTypeUsages
in interfaceTypeUsageCollectable
- Overrides:
collectTypeUsages
in classAbstractExpression
-
deepClone
- Specified by:
deepClone
in interfaceDeepCloneable<Expression>
-
inferredType
-
getPrecedence
- Specified by:
getPrecedence
in interfaceDumpableWithPrecedence
- Specified by:
getPrecedence
in classAbstractExpression
-
dumpInner
- Specified by:
dumpInner
in classAbstractExpression
-
getComputedLiteral
- Specified by:
getComputedLiteral
in interfaceExpression
- Overrides:
getComputedLiteral
in classAbstractExpression
-
isLValueExprFor
-
isLiteralFunctionOf
-
isXorM1
public boolean isXorM1() -
getReplacementXorM1
-
isMutationOf
-
getMutationOf
-
replaceSingleUsageLValues
public Expression replaceSingleUsageLValues(LValueRewriter lValueRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer) - Specified by:
replaceSingleUsageLValues
in interfaceExpression
-
applyExpressionRewriter
public Expression applyExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) - Specified by:
applyExpressionRewriter
in interfaceExpression
-
applyReverseExpressionRewriter
public Expression applyReverseExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) - Specified by:
applyReverseExpressionRewriter
in interfaceExpression
-
collectUsedLValues
- Specified by:
collectUsedLValues
in interfaceExpression
-
canPushDownInto
public boolean canPushDownInto()- Specified by:
canPushDownInto
in interfaceExpression
- Overrides:
canPushDownInto
in classAbstractExpression
-
equals
- Specified by:
equals
in classAbstractExpression
-
equivalentUnder
- Specified by:
equivalentUnder
in interfaceComparableUnderEC
- Specified by:
equivalentUnder
in interfaceExpression
-
returnsTrueForNaN
-
canNegateAroundNaN
-
rewriteXCMPCompOp
-
canThrow
- Specified by:
canThrow
in interfaceExpression
- Overrides:
canThrow
in classAbstractExpression
-
rewriteBoxing
- Specified by:
rewriteBoxing
in interfaceBoxingProcessor
-
applyNonArgExpressionRewriter
public void applyNonArgExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) - Specified by:
applyNonArgExpressionRewriter
in interfaceBoxingProcessor
-
getLhs
-
getRhs
-
getOp
-
visit
- Specified by:
visit
in interfaceExpression
- Overrides:
visit
in classAbstractExpression
-
pushDown
- Specified by:
pushDown
in interfaceExpression
- Overrides:
pushDown
in classAbstractExpression
-