soot.dava.toolkits.base.AST.transformations
Class SimplifyConditions

java.lang.Object
  extended by soot.dava.toolkits.base.AST.analysis.AnalysisAdapter
      extended by soot.dava.toolkits.base.AST.analysis.DepthFirstAdapter
          extended by soot.dava.toolkits.base.AST.transformations.SimplifyConditions
All Implemented Interfaces:
Analysis

public class SimplifyConditions
extends DepthFirstAdapter


Field Summary
 boolean changed
           
static boolean DEBUG
           
 
Constructor Summary
SimplifyConditions()
           
SimplifyConditions(boolean verbose)
           
 
Method Summary
 ASTCondition applyDeMorgans(ASTAggregatedCondition aggCond)
           
 Boolean doubleSwitch(int op, double l, double r)
           
 ASTUnaryCondition evaluateBinaryCondition(ConditionExpr expr)
           
 void fixedPoint(ASTControlFlowNode node)
           
 Boolean floatSwitch(int op, float l, float r)
           
 Boolean intSwitch(int op, int l, int r)
           
 Boolean isBooleanConstant(Value internal)
           
 Boolean longSwitch(int op, long l, long r)
           
 void outASTDoWhileNode(ASTDoWhileNode node)
           
 void outASTForLoopNode(ASTForLoopNode node)
           
 void outASTIfElseNode(ASTIfElseNode node)
           
 void outASTIfNode(ASTIfNode node)
           
 void outASTWhileNode(ASTWhileNode node)
           
 ASTCondition simplifyIfAtleastOneConstant(ASTAggregatedCondition aggCond)
           
 ASTCondition simplifyTheCondition(ASTCondition cond)
           
 
Methods inherited from class soot.dava.toolkits.base.AST.analysis.DepthFirstAdapter
caseArrayRef, caseASTAndCondition, caseASTBinaryCondition, caseASTDoWhileNode, caseASTForLoopNode, caseASTIfElseNode, caseASTIfNode, caseASTLabeledBlockNode, caseASTMethodNode, caseASTOrCondition, caseASTStatementSequenceNode, caseASTSwitchNode, caseASTSynchronizedBlockNode, caseASTTryNode, caseASTUnaryCondition, caseASTUnconditionalLoopNode, caseASTWhileNode, caseBinopExpr, caseCastExpr, caseDefinitionStmt, caseDVariableDeclarationStmt, caseExpr, caseExprOrRefValueBox, caseInstanceFieldRef, caseInstanceInvokeExpr, caseInstanceOfExpr, caseInvokeExpr, caseInvokeStmt, caseNewArrayExpr, caseNewMultiArrayExpr, caseRef, caseReturnStmt, caseStaticFieldRef, caseStmt, caseThrowStmt, caseType, caseUnopExpr, caseValue, debug, decideCaseExpr, decideCaseExprOrRef, decideCaseRef, inArrayRef, inASTAndCondition, inASTBinaryCondition, inASTDoWhileNode, inASTForLoopNode, inASTIfElseNode, inASTIfNode, inASTLabeledBlockNode, inASTMethodNode, inASTOrCondition, inASTStatementSequenceNode, inASTSwitchNode, inASTSynchronizedBlockNode, inASTTryNode, inASTUnaryCondition, inASTUnconditionalLoopNode, inASTWhileNode, inBinopExpr, inCastExpr, inDefinitionStmt, inDVariableDeclarationStmt, inExpr, inExprOrRefValueBox, inInstanceFieldRef, inInstanceInvokeExpr, inInstanceOfExpr, inInvokeExpr, inInvokeStmt, inNewArrayExpr, inNewMultiArrayExpr, inRef, inReturnStmt, inStaticFieldRef, inStmt, inThrowStmt, inType, inUnopExpr, inValue, normalRetrieving, outArrayRef, outASTAndCondition, outASTBinaryCondition, outASTLabeledBlockNode, outASTMethodNode, outASTOrCondition, outASTStatementSequenceNode, outASTSwitchNode, outASTSynchronizedBlockNode, outASTTryNode, outASTUnaryCondition, outASTUnconditionalLoopNode, outBinopExpr, outCastExpr, outDefinitionStmt, outDVariableDeclarationStmt, outExpr, outExprOrRefValueBox, outInstanceFieldRef, outInstanceInvokeExpr, outInstanceOfExpr, outInvokeExpr, outInvokeStmt, outNewArrayExpr, outNewMultiArrayExpr, outRef, outReturnStmt, outStaticFieldRef, outStmt, outThrowStmt, outType, outUnopExpr, outValue
 
Methods inherited from class soot.dava.toolkits.base.AST.analysis.AnalysisAdapter
defaultCase
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEBUG

public static boolean DEBUG

changed

public boolean changed
Constructor Detail

SimplifyConditions

public SimplifyConditions()

SimplifyConditions

public SimplifyConditions(boolean verbose)
Method Detail

fixedPoint

public void fixedPoint(ASTControlFlowNode node)

outASTIfNode

public void outASTIfNode(ASTIfNode node)
Overrides:
outASTIfNode in class DepthFirstAdapter

outASTIfElseNode

public void outASTIfElseNode(ASTIfElseNode node)
Overrides:
outASTIfElseNode in class DepthFirstAdapter

outASTWhileNode

public void outASTWhileNode(ASTWhileNode node)
Overrides:
outASTWhileNode in class DepthFirstAdapter

outASTDoWhileNode

public void outASTDoWhileNode(ASTDoWhileNode node)
Overrides:
outASTDoWhileNode in class DepthFirstAdapter

outASTForLoopNode

public void outASTForLoopNode(ASTForLoopNode node)
Overrides:
outASTForLoopNode in class DepthFirstAdapter

applyDeMorgans

public ASTCondition applyDeMorgans(ASTAggregatedCondition aggCond)

simplifyIfAtleastOneConstant

public ASTCondition simplifyIfAtleastOneConstant(ASTAggregatedCondition aggCond)

isBooleanConstant

public Boolean isBooleanConstant(Value internal)

simplifyTheCondition

public ASTCondition simplifyTheCondition(ASTCondition cond)

evaluateBinaryCondition

public ASTUnaryCondition evaluateBinaryCondition(ConditionExpr expr)

longSwitch

public Boolean longSwitch(int op,
                          long l,
                          long r)

doubleSwitch

public Boolean doubleSwitch(int op,
                            double l,
                            double r)

floatSwitch

public Boolean floatSwitch(int op,
                           float l,
                           float r)

intSwitch

public Boolean intSwitch(int op,
                         int l,
                         int r)