Class LocalVariableCleaner
- java.lang.Object
-
- soot.dava.toolkits.base.AST.analysis.AnalysisAdapter
-
- soot.dava.toolkits.base.AST.analysis.DepthFirstAdapter
-
- soot.dava.toolkits.base.AST.transformations.LocalVariableCleaner
-
- All Implemented Interfaces:
Analysis
public class LocalVariableCleaner extends DepthFirstAdapter
The class is aimed to target cleaning up of unused local variables. Should be invoked after executing CopyPropagation Another thing that this class does which perhaps should have been implemented separately is to check whether there is an assignment which never gets used later on. If there exists such an assignment this assignment is removed first and then all the useless locals checks should be reapplied (until a fixed point)
-
-
Field Summary
Fields Modifier and Type Field Description booleanDEBUG
-
Constructor Summary
Constructors Constructor Description LocalVariableCleaner(boolean verbose, ASTNode AST)LocalVariableCleaner(ASTNode AST)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancanRemoveDef(DefinitionStmt ds)List<DefinitionStmt>getDefs(Local var)voidoutASTMethodNode(ASTMethodNode node)booleanremoveStmt(Stmt stmt)-
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, outASTDoWhileNode, outASTForLoopNode, outASTIfElseNode, outASTIfNode, outASTLabeledBlockNode, outASTOrCondition, outASTStatementSequenceNode, outASTSwitchNode, outASTSynchronizedBlockNode, outASTTryNode, outASTUnaryCondition, outASTUnconditionalLoopNode, outASTWhileNode, 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
-
-
-
-
Field Detail
-
DEBUG
public final boolean DEBUG
- See Also:
- Constant Field Values
-
-
Method Detail
-
outASTMethodNode
public void outASTMethodNode(ASTMethodNode node)
- Overrides:
outASTMethodNodein classDepthFirstAdapter
-
canRemoveDef
public boolean canRemoveDef(DefinitionStmt ds)
-
getDefs
public List<DefinitionStmt> getDefs(Local var)
-
removeStmt
public boolean removeStmt(Stmt stmt)
-
-