Class ComparisonOperation
java.lang.Object
org.benf.cfr.reader.bytecode.analysis.parse.expression.AbstractExpression
org.benf.cfr.reader.bytecode.analysis.parse.expression.ComparisonOperation
- All Implemented Interfaces:
HasByteCodeLoc, Expression, ConditionalExpression, BoxingProcessor, DeepCloneable<Expression>, ComparableUnderEC, Dumpable, DumpableWithPrecedence, TypeUsageCollectable
public class ComparisonOperation
extends AbstractExpression
implements ConditionalExpression, BoxingProcessor
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final booleanprivate Expressionprivate final CompOpprivate Expression -
Constructor Summary
ConstructorsConstructorDescriptionComparisonOperation(BytecodeLoc loc, Expression lhs, Expression rhs, CompOp op) ComparisonOperation(BytecodeLoc loc, Expression lhs, Expression rhs, CompOp op, boolean canNegate) -
Method Summary
Modifier and TypeMethodDescriptionprivate voidaddIfLValue(Expression expression, Set<LValue> res) applyExpressionRewriter(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) booleancanThrow(ExceptionCheck caught) voidcollectTypeUsages(TypeUsageCollector collector) voidcollectUsedLValues(LValueUsageCollector lValueUsageCollector) deepClone(CloneHelper cloneHelper) booleanfinal booleanequivalentUnder(Object o, EquivalenceConstraint constraint) getComputedLiteral(Map<LValue, Literal> display) private ConditionalExpressiongetConditionalExpression(Expression booleanExpression, ComparisonOperation.BooleanComparisonType booleanComparisonType) getDemorganApplied(boolean amNegating) getLhs()getOp()getRhs()intgetSize(Precedence outerPrecedence) private static ComparisonOperation.BooleanComparisonTypeisBooleanComparison(Expression a, Expression b, CompOp op) replaceSingleUsageLValues(LValueRewriter lValueRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer) booleanrewriteBoxing(PrimitiveBoxingRewriter boxingRewriter) simplify()Methods inherited from class AbstractExpression
addLoc, canPushDownInto, dump, dumpWithOuterPrecedence, getInferredJavaType, getLoc, isSimple, isValidStatement, outerDeepClone, pushDown, toString, visitMethods inherited from class Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface DeepCloneable
outerDeepCloneMethods inherited from interface DumpableWithPrecedence
dumpWithOuterPrecedenceMethods inherited from interface Expression
canPushDownInto, dump, getInferredJavaType, isSimple, isValidStatement, pushDown, visitMethods inherited from interface HasByteCodeLoc
addLoc, getLoc
-
Field Details
-
lhs
-
rhs
-
op
-
canNegate
private final boolean canNegate
-
-
Constructor Details
-
ComparisonOperation
-
ComparisonOperation
public ComparisonOperation(BytecodeLoc loc, Expression lhs, Expression rhs, CompOp op, boolean canNegate)
-
-
Method Details
-
deepClone
- Specified by:
deepClonein interfaceDeepCloneable<Expression>
-
getCombinedLoc
- Specified by:
getCombinedLocin interfaceHasByteCodeLoc
-
collectTypeUsages
- Specified by:
collectTypeUsagesin interfaceTypeUsageCollectable- Overrides:
collectTypeUsagesin classAbstractExpression
-
getSize
- Specified by:
getSizein interfaceConditionalExpression
-
getPrecedence
- Specified by:
getPrecedencein interfaceDumpableWithPrecedence- Specified by:
getPrecedencein classAbstractExpression
-
dumpInner
- Specified by:
dumpInnerin classAbstractExpression
-
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
-
getNegated
- Specified by:
getNegatedin interfaceConditionalExpression
-
getOp
-
getDemorganApplied
- Specified by:
getDemorganAppliedin interfaceConditionalExpression
-
getRightDeep
- Specified by:
getRightDeepin interfaceConditionalExpression
-
addIfLValue
-
getLoopLValues
- Specified by:
getLoopLValuesin interfaceConditionalExpression
-
collectUsedLValues
- Specified by:
collectUsedLValuesin interfaceExpression
-
isBooleanComparison
private static ComparisonOperation.BooleanComparisonType isBooleanComparison(Expression a, Expression b, CompOp op) -
getConditionalExpression
private ConditionalExpression getConditionalExpression(Expression booleanExpression, ComparisonOperation.BooleanComparisonType booleanComparisonType) -
optimiseForType
- Specified by:
optimiseForTypein interfaceConditionalExpression
-
getLhs
-
getRhs
-
simplify
- Specified by:
simplifyin interfaceConditionalExpression
-
rewriteBoxing
- Specified by:
rewriteBoxingin interfaceBoxingProcessor
-
applyNonArgExpressionRewriter
public void applyNonArgExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags) - Specified by:
applyNonArgExpressionRewriterin interfaceBoxingProcessor
-
equals
- Specified by:
equalsin classAbstractExpression
-
canThrow
- Specified by:
canThrowin interfaceExpression- Overrides:
canThrowin classAbstractExpression
-
equivalentUnder
- Specified by:
equivalentUnderin interfaceComparableUnderEC- Specified by:
equivalentUnderin interfaceExpression
-
getComputedLiteral
- Specified by:
getComputedLiteralin interfaceExpression- Overrides:
getComputedLiteralin classAbstractExpression
-