Class LValueAssignmentAndAliasCondenser
- java.lang.Object
-
- org.benf.cfr.reader.bytecode.analysis.parse.utils.LValueAssignmentAndAliasCondenser
-
- All Implemented Interfaces:
LValueAssignmentCollector<Statement>,LValueRewriter<Statement>
public class LValueAssignmentAndAliasCondenser extends java.lang.Object implements LValueRewriter<Statement>, LValueAssignmentCollector<Statement>
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classLValueAssignmentAndAliasCondenser.AliasRewriterprivate static classLValueAssignmentAndAliasCondenser.ExpressionStatementPairprivate static classLValueAssignmentAndAliasCondenser.LValueStatementContainerclassLValueAssignmentAndAliasCondenser.MutationRewriterFirstPassclassLValueAssignmentAndAliasCondenser.MutationRewriterSecondPassprivate static classLValueAssignmentAndAliasCondenser.VersionedLValue-
Nested classes/interfaces inherited from interface org.benf.cfr.reader.bytecode.analysis.parse.utils.LValueRewriter
LValueRewriter.Util
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<StackSSALabel,Expression>aliasReplacementsprivate java.util.Set<StackSSALabel>blacklistedprivate java.util.Map<Expression,Expression>cacheprivate static java.util.Set<SSAIdent>emptyFixedprivate java.util.Map<StackSSALabel,LValueAssignmentAndAliasCondenser.ExpressionStatementPair>foundprivate java.util.Set<LValue>keepConstantprivate java.util.Map<StackSSALabel,LValueAssignmentAndAliasCondenser.ExpressionStatementPair>multiFoundprivate java.util.Map<LValueAssignmentAndAliasCondenser.VersionedLValue,LValueAssignmentAndAliasCondenser.ExpressionStatementPair>mutableFound
-
Constructor Summary
Constructors Constructor Description LValueAssignmentAndAliasCondenser()LValueAssignmentAndAliasCondenser(LValueAssignmentAndAliasCondenser other, java.util.Set<LValue> keepConstant)
-
Method Summary
-
-
-
Field Detail
-
found
private final java.util.Map<StackSSALabel,LValueAssignmentAndAliasCondenser.ExpressionStatementPair> found
-
blacklisted
private final java.util.Set<StackSSALabel> blacklisted
-
keepConstant
private final java.util.Set<LValue> keepConstant
-
aliasReplacements
private final java.util.Map<StackSSALabel,Expression> aliasReplacements
-
multiFound
private final java.util.Map<StackSSALabel,LValueAssignmentAndAliasCondenser.ExpressionStatementPair> multiFound
-
mutableFound
private final java.util.Map<LValueAssignmentAndAliasCondenser.VersionedLValue,LValueAssignmentAndAliasCondenser.ExpressionStatementPair> mutableFound
-
cache
private final java.util.Map<Expression,Expression> cache
-
emptyFixed
private static final java.util.Set<SSAIdent> emptyFixed
-
-
Constructor Detail
-
LValueAssignmentAndAliasCondenser
public LValueAssignmentAndAliasCondenser()
-
LValueAssignmentAndAliasCondenser
public LValueAssignmentAndAliasCondenser(LValueAssignmentAndAliasCondenser other, java.util.Set<LValue> keepConstant)
-
-
Method Detail
-
collect
public void collect(StackSSALabel lValue, StatementContainer<Statement> statementContainer, Expression value)
- Specified by:
collectin interfaceLValueAssignmentCollector<Statement>
-
collectMultiUse
public void collectMultiUse(StackSSALabel lValue, StatementContainer<Statement> statementContainer, Expression value)
- Specified by:
collectMultiUsein interfaceLValueAssignmentCollector<Statement>
-
collectMutatedLValue
public void collectMutatedLValue(LValue lValue, StatementContainer<Statement> statementContainer, Expression value)
- Specified by:
collectMutatedLValuein interfaceLValueAssignmentCollector<Statement>
-
collectLocalVariableAssignment
public void collectLocalVariableAssignment(LocalVariable localVariable, StatementContainer<Statement> statementContainer, Expression value)
- Specified by:
collectLocalVariableAssignmentin interfaceLValueAssignmentCollector<Statement>
-
getWithFixed
public LValueRewriter getWithFixed(java.util.Set<SSAIdent> fixed)
- Specified by:
getWithFixedin interfaceLValueRewriter<Statement>
-
keepConstant
public LValueRewriter<Statement> keepConstant(java.util.Collection<LValue> usedLValues)
- Specified by:
keepConstantin interfaceLValueRewriter<Statement>
-
reset
public void reset()
-
needLR
public boolean needLR()
- Specified by:
needLRin interfaceLValueRewriter<Statement>
-
getLValueReplacement
public Expression getLValueReplacement(LValue lValue, SSAIdentifiers<LValue> ssaIdentifiers, StatementContainer<Statement> lvSc)
- Specified by:
getLValueReplacementin interfaceLValueRewriter<Statement>
-
isSimple
private boolean isSimple(Expression res)
-
jumpsMethods
private boolean jumpsMethods(Op03SimpleStatement lvSc, Op03SimpleStatement statementContainer)
-
explicitlyReplaceThisLValue
public boolean explicitlyReplaceThisLValue(LValue lValue)
- Specified by:
explicitlyReplaceThisLValuein interfaceLValueRewriter<Statement>
-
checkPostConditions
public void checkPostConditions(LValue lValue, Expression rValue)
- Specified by:
checkPostConditionsin interfaceLValueRewriter<Statement>
-
getAliasRewriter
public LValueAssignmentAndAliasCondenser.AliasRewriter getAliasRewriter()
-
getMutationRewriterFirstPass
public LValueAssignmentAndAliasCondenser.MutationRewriterFirstPass getMutationRewriterFirstPass()
-
-