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) voidapplyNonArgExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) applyReverseExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) private static booleancanNegateAroundNaN(CompOp from, int on) booleanbooleancanThrow(ExceptionCheck caught) voidcollectTypeUsages(TypeUsageCollector collector) voidcollectUsedLValues(LValueUsageCollector lValueUsageCollector) deepClone(CloneHelper cloneHelper) booleanfinal booleanequivalentUnder(Object o, EquivalenceConstraint constraint) getComputedLiteral(Map<LValue, Literal> display) getLhs()getMutationOf(LValue lValue) getOp()getRhs()private static InferredJavaTypeinferredType(InferredJavaType a, InferredJavaType b, ArithOp op) booleanisLiteralFunctionOf(LValue lValue) private booleanisLValueExprFor(LValueExpression expression, LValue lValue) booleanisMutationOf(LValue lValue) booleanisXorM1()pushDown(Expression toPush, Expression parent) replaceSingleUsageLValues(LValueRewriter lValueRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer) private static booleanreturnsTrueForNaN(CompOp from, int on, boolean nanG) booleanrewriteBoxing(PrimitiveBoxingRewriter boxingRewriter) private static CompOprewriteXCMPCompOp(CompOp from, int on) <T> Tvisit(ExpressionVisitor<T> visitor) Methods inherited from class 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:
getCombinedLocin interfaceHasByteCodeLoc
-
collectTypeUsages
- Specified by:
collectTypeUsagesin interfaceTypeUsageCollectable- Overrides:
collectTypeUsagesin classAbstractExpression
-
deepClone
- Specified by:
deepClonein interfaceDeepCloneable<Expression>
-
inferredType
-
getPrecedence
- Specified by:
getPrecedencein interfaceDumpableWithPrecedence- Specified by:
getPrecedencein classAbstractExpression
-
dumpInner
- Specified by:
dumpInnerin classAbstractExpression
-
getComputedLiteral
- Specified by:
getComputedLiteralin interfaceExpression- Overrides:
getComputedLiteralin classAbstractExpression
-
isLValueExprFor
-
isLiteralFunctionOf
-
isXorM1
public boolean isXorM1() -
getReplacementXorM1
-
isMutationOf
-
getMutationOf
-
replaceSingleUsageLValues
public Expression replaceSingleUsageLValues(LValueRewriter lValueRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer) - Specified by:
replaceSingleUsageLValuesin interfaceExpression
-
applyExpressionRewriter
public Expression applyExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) - Specified by:
applyExpressionRewriterin interfaceExpression
-
applyReverseExpressionRewriter
public Expression applyReverseExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) - Specified by:
applyReverseExpressionRewriterin interfaceExpression
-
collectUsedLValues
- Specified by:
collectUsedLValuesin interfaceExpression
-
canPushDownInto
public boolean canPushDownInto()- Specified by:
canPushDownIntoin interfaceExpression- Overrides:
canPushDownIntoin classAbstractExpression
-
equals
- Specified by:
equalsin classAbstractExpression
-
equivalentUnder
- Specified by:
equivalentUnderin interfaceComparableUnderEC- Specified by:
equivalentUnderin interfaceExpression
-
returnsTrueForNaN
-
canNegateAroundNaN
-
rewriteXCMPCompOp
-
canThrow
- Specified by:
canThrowin interfaceExpression- Overrides:
canThrowin classAbstractExpression
-
rewriteBoxing
- Specified by:
rewriteBoxingin interfaceBoxingProcessor
-
applyNonArgExpressionRewriter
public void applyNonArgExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) - Specified by:
applyNonArgExpressionRewriterin interfaceBoxingProcessor
-
getLhs
-
getRhs
-
getOp
-
visit
- Specified by:
visitin interfaceExpression- Overrides:
visitin classAbstractExpression
-
pushDown
- Specified by:
pushDownin interfaceExpression- Overrides:
pushDownin classAbstractExpression
-