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 org.benf.cfr.reader.bytecode.analysis.parse.expression.AbstractExpression
addLoc, canPushDownInto, dump, dumpWithOuterPrecedence, getInferredJavaType, getLoc, isSimple, isValidStatement, outerDeepClone, pushDown, toString, visitMethods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.benf.cfr.reader.bytecode.analysis.parse.rewriters.DeepCloneable
outerDeepCloneMethods inherited from interface org.benf.cfr.reader.util.output.DumpableWithPrecedence
dumpWithOuterPrecedenceMethods inherited from interface org.benf.cfr.reader.bytecode.analysis.parse.Expression
canPushDownInto, dump, getInferredJavaType, isSimple, isValidStatement, pushDown, visitMethods inherited from interface org.benf.cfr.reader.bytecode.analysis.loc.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
-