Package soot.JastAddJ
Class ForStmt
- java.lang.Object
-
- beaver.Symbol
-
- soot.JastAddJ.ASTNode<ASTNode>
-
- soot.JastAddJ.Stmt
-
- soot.JastAddJ.BranchTargetStmt
-
- soot.JastAddJ.ForStmt
-
- All Implemented Interfaces:
Cloneable,Iterable<ASTNode>,BranchPropagation,VariableScope
public class ForStmt extends BranchTargetStmt implements Cloneable, VariableScope
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanbegin_label_computedprotected Stmtbegin_label_valueprotected booleancanCompleteNormally_computedprotected booleancanCompleteNormally_valueprotected booleancond_label_computedprotected Stmtcond_label_valueprotected booleanend_label_computedprotected Stmtend_label_valueprotected MapisDAafter_Variable_valuesprotected MapisDUafter_Variable_valuesprotected MapisDUbeforeCondition_Variable_valuesprotected MaplocalLookup_String_valuesprotected MaplocalVariableDeclaration_String_valuesprotected MaplookupVariable_String_valuesprotected MaptargetOf_BreakStmt_valuesprotected MaptargetOf_ContinueStmt_valuesprotected booleanupdate_label_computedprotected Stmtupdate_label_value-
Fields inherited from class soot.JastAddJ.BranchTargetStmt
branches_computed, branches_value, escapedBranches_computed, escapedBranches_value, reachableBreak_computed, reachableBreak_value, reachableContinue_computed, reachableContinue_value, targetBranches_computed, targetBranches_value, targetBreaks_computed, targetBreaks_value, targetContinues_computed, targetContinues_value
-
Fields inherited from class soot.JastAddJ.Stmt
localNum_computed, localNum_value
-
Fields inherited from class soot.JastAddJ.ASTNode
children, generatedWithCacheCycle, generatedWithCircularEnabled, generatedWithComponentCheck, in$Circle, is$Final, numChildren, parent, PRIMITIVE_PACKAGE_NAME, state
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddInitStmt(Stmt node)Append an element to the InitStmt list.voidaddInitStmtNoTransform(Stmt node)voidaddUpdateStmt(Stmt node)Append an element to the UpdateStmt list.voidaddUpdateStmtNoTransform(Stmt node)Stmtbegin_label()Stmtbreak_label()booleancanCompleteNormally()ForStmtclone()Stmtcond_label()Stmtcontinue_label()booleancontinueLabel()ForStmtcopy()booleanDefine_boolean_insideLoop(ASTNode caller, ASTNode child)booleanDefine_boolean_isDAbefore(ASTNode caller, ASTNode child, Variable v)booleanDefine_boolean_isDUbefore(ASTNode caller, ASTNode child, Variable v)booleanDefine_boolean_reachable(ASTNode caller, ASTNode child)booleanDefine_boolean_reportUnreachable(ASTNode caller, ASTNode child)SimpleSetDefine_SimpleSet_lookupVariable(ASTNode caller, ASTNode child, String name)StmtDefine_soot_jimple_Stmt_condition_false_label(ASTNode caller, ASTNode child)StmtDefine_soot_jimple_Stmt_condition_true_label(ASTNode caller, ASTNode child)VariableScopeDefine_VariableScope_outerScope(ASTNode caller, ASTNode child)booleandefinesLabel()Stmtend_label()voidflushCache()voidflushCollectionCache()ForStmtfullCopy()Create a deep copy of the AST subtree at this node.ExprgetCondition()Retrieves the (optional) Condition child.Opt<Expr>getConditionOpt()Opt<Expr>getConditionOptNoTransform()Retrieves the optional node for child Condition.StmtgetInitStmt(int i)Retrieves the element at indexiin the InitStmt list..List<Stmt>getInitStmtList()Retrieves the InitStmt list.List<Stmt>getInitStmtListNoTransform()Retrieves the InitStmt list.List<Stmt>getInitStmts()Retrieves the InitStmt list.List<Stmt>getInitStmtsNoTransform()Retrieves the InitStmt list.intgetNumInitStmt()Retrieves the number of children in the InitStmt list.intgetNumInitStmtNoTransform()Retrieves the number of children in the InitStmt list.intgetNumUpdateStmt()Retrieves the number of children in the UpdateStmt list.intgetNumUpdateStmtNoTransform()Retrieves the number of children in the UpdateStmt list.StmtgetStmt()Retrieves the Stmt child.StmtgetStmtNoTransform()Retrieves the Stmt child.StmtgetUpdateStmt(int i)Retrieves the element at indexiin the UpdateStmt list..List<Stmt>getUpdateStmtList()Retrieves the UpdateStmt list.List<Stmt>getUpdateStmtListNoTransform()Retrieves the UpdateStmt list.List<Stmt>getUpdateStmts()Retrieves the UpdateStmt list.List<Stmt>getUpdateStmtsNoTransform()Retrieves the UpdateStmt list.booleanhasCondition()Check whether the optional Condition child exists.voidinit$Children()Initializes the child array to the correct size.booleanisDAafter(Variable v)booleanisDAafterInitialization(Variable v)booleanisDUafter(Variable v)booleanisDUafterInit(Variable v)booleanisDUafterUpdate(Variable v)booleanisDUbeforeCondition(Variable v)voidjimplify2(Body b)SimpleSetlocalLookup(String name)VariableDeclarationlocalVariableDeclaration(String name)SimpleSetlookupVariable(String name)booleanmayHaveRewrite()booleanmodifiedInScope(Variable var)protected intnumChildren()ASTNoderewriteTo()voidsetCondition(Expr node)Replaces the (optional) Condition child.voidsetConditionOpt(Opt<Expr> opt)Replaces the optional node for the Condition child.voidsetInitStmt(Stmt node, int i)Replaces the InitStmt list element at indexiwith the new nodenode.voidsetInitStmtList(List<Stmt> list)Replaces the InitStmt list.voidsetStmt(Stmt node)Replaces the Stmt child.voidsetUpdateStmt(Stmt node, int i)Replaces the UpdateStmt list element at indexiwith the new nodenode.voidsetUpdateStmtList(List<Stmt> list)Replaces the UpdateStmt list.booleantargetOf(BreakStmt stmt)booleantargetOf(ContinueStmt stmt)voidtoString(StringBuffer s)voidtypeCheck()Stmtupdate_label()-
Methods inherited from class soot.JastAddJ.BranchTargetStmt
branches, branchTarget, collectBranches, collectFinally, escapedBranches, reachableBreak, reachableContinue, targetBranches, targetBreaks, targetContinues
-
Methods inherited from class soot.JastAddJ.Stmt
addsIndentationLevel, declaresVariable, Define_String_typeDeclIndent, enclosingBodyDecl, hostType, isDAbefore, isDUbefore, localNum, lookupMethod, lookupType, lookupType, reachable, reportUnreachable
-
Methods inherited from class soot.JastAddJ.ASTNode
accessControl, addAttributes, addChild, asImmediate, asLocal, asLocal, asRValue, beginExceptionRange, checkDUeverywhere, checkEnum, checkUncheckedConversion, checkWarnings, clearLocations, cloneSubtree, collectEnclosingVariables, collectErrors, collectExceptions, collectTypesToHierarchy, collectTypesToSignatures, compilationUnit, Define_Annotation_lookupAnnotation, Define_ArrayList_exceptionRanges, Define_ASTNode_enclosingBlock, Define_BodyDecl_enclosingBodyDecl, Define_boolean_enclosedByExceptionHandler, Define_boolean_handlesException, Define_boolean_hasPackage, Define_boolean_inExplicitConstructorInvocation, Define_boolean_inExtendsOrImplements, Define_boolean_inhModifiedInScope, Define_boolean_insideSwitch, Define_boolean_inStaticContext, Define_boolean_isAnonymous, Define_boolean_isAnonymousDecl, Define_boolean_isCatchParam, Define_boolean_isConstructorParameter, Define_boolean_isDest, Define_boolean_isExceptionHandlerParameter, Define_boolean_isExplicitGenericConstructorAccess, Define_boolean_isIncOrDec, Define_boolean_isLocalClass, Define_boolean_isMemberType, Define_boolean_isMethodParameter, Define_boolean_isNestedType, Define_boolean_isSource, Define_boolean_mayBeAbstract, Define_boolean_mayBeFinal, Define_boolean_mayBeNative, Define_boolean_mayBePrivate, Define_boolean_mayBeProtected, Define_boolean_mayBePublic, Define_boolean_mayBeStatic, Define_boolean_mayBeStrictfp, Define_boolean_mayBeSynchronized, Define_boolean_mayBeTransient, Define_boolean_mayBeVolatile, Define_boolean_mayUseAnnotationTarget, Define_boolean_reachableCatchClause, Define_boolean_resourcePreviouslyDeclared, Define_boolean_variableArityValid, Define_boolean_withinDeprecatedAnnotation, Define_boolean_withinSuppressWarnings, Define_Case_bind, Define_CatchClause_catchClause, Define_ClassInstanceExpr_getClassInstanceExpr, Define_Collection_lookupConstructor, Define_Collection_lookupMethod, Define_Collection_lookupSuperConstructor, Define_Collection_TypeDecl__caughtExceptions, Define_CompilationUnit_compilationUnit, Define_ConstructorDecl_constructorDecl, Define_ConstructorDecl_unknownConstructor, Define_ElementValue_lookupElementTypeValue, Define_Expr_nestedScope, Define_GLBType_lookupGLBType, Define_int_localNum, Define_LabeledStmt_lookupLabel, Define_LUBType_lookupLUBType, Define_MethodDecl_unknownMethod, Define_NameType_nameType, Define_SimpleSet_allImportedTypes, Define_SimpleSet_lookupType, Define_String_hostPackage, Define_String_methodHost, Define_String_packageName, Define_TypeDecl_assignConvertedType, Define_TypeDecl_componentType, Define_TypeDecl_declType, Define_TypeDecl_enclosingAnnotationDecl, Define_TypeDecl_enclosingInstance, Define_TypeDecl_enclosingType, Define_TypeDecl_expectedType, Define_TypeDecl_genericDecl, Define_TypeDecl_hostType, Define_TypeDecl_lookupType, Define_TypeDecl_lookupWildcardExtends, Define_TypeDecl_lookupWildcardSuper, Define_TypeDecl_returnType, Define_TypeDecl_superType, Define_TypeDecl_switchType, Define_TypeDecl_typeBoolean, Define_TypeDecl_typeByte, Define_TypeDecl_typeChar, Define_TypeDecl_typeCloneable, Define_TypeDecl_typeDouble, Define_TypeDecl_typeError, Define_TypeDecl_typeException, Define_TypeDecl_typeFloat, Define_TypeDecl_typeInt, Define_TypeDecl_typeLong, Define_TypeDecl_typeNull, Define_TypeDecl_typeNullPointerException, Define_TypeDecl_typeObject, Define_TypeDecl_typeRuntimeException, Define_TypeDecl_typeSerializable, Define_TypeDecl_typeShort, Define_TypeDecl_typeString, Define_TypeDecl_typeThrowable, Define_TypeDecl_typeVoid, Define_TypeDecl_typeWildcard, Define_TypeDecl_unknownType, Define_Variable_unknownField, definiteAssignment, dumpString, dumpTree, dumpTree, dumpTreeNoRewrite, dumpTreeNoRewrite, duringAnnotations, duringAnonymousClasses, duringBoundNames, duringDU, duringEnums, duringGenericTypeVariables, duringImplicitConstructor, duringLiterals, duringNameResolution, duringSyntacticClassification, duringVariableDeclarationTransformation, emitConstant, end, endExceptionRange, error, errorPrefix, exceptionHandling, extractIndent, extractSingleType, flushCaches, getChild, getChildNoTransform, getIndexOfChild, getNumChild, getNumChildNoTransform, getParent, in$Circle, in$Circle, indent, insertChild, is$Final, is$Final, isDescendantTo, isStringAdd, iterator, jimplify1phase1, jimplify1phase2, jimplify2, lineNumber, location, nameCheck, newLabel, options, putSimpleSetElement, reachedException, removeChild, removeInstanceMethods, removeInstanceVariables, replace, setChild, setEnd, setLocation, setParent, setStart, sourceFile, start, state, toString, transformation, transformEnumConstructors, unassignedEverywhere, usesTypeVariable, varChildIndex, varChildIndex, warning, warningPrefix, with
-
Methods inherited from class beaver.Symbol
getColumn, getEnd, getId, getLine, getStart, makePosition
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Field Detail
-
targetOf_ContinueStmt_values
protected Map targetOf_ContinueStmt_values
-
targetOf_BreakStmt_values
protected Map targetOf_BreakStmt_values
-
isDAafter_Variable_values
protected Map isDAafter_Variable_values
-
isDUafter_Variable_values
protected Map isDUafter_Variable_values
-
isDUbeforeCondition_Variable_values
protected Map isDUbeforeCondition_Variable_values
-
localLookup_String_values
protected Map localLookup_String_values
-
localVariableDeclaration_String_values
protected Map localVariableDeclaration_String_values
-
canCompleteNormally_computed
protected boolean canCompleteNormally_computed
-
canCompleteNormally_value
protected boolean canCompleteNormally_value
-
cond_label_computed
protected boolean cond_label_computed
-
cond_label_value
protected Stmt cond_label_value
-
begin_label_computed
protected boolean begin_label_computed
-
begin_label_value
protected Stmt begin_label_value
-
update_label_computed
protected boolean update_label_computed
-
update_label_value
protected Stmt update_label_value
-
end_label_computed
protected boolean end_label_computed
-
end_label_value
protected Stmt end_label_value
-
lookupVariable_String_values
protected Map lookupVariable_String_values
-
-
Method Detail
-
flushCache
public void flushCache()
- Overrides:
flushCachein classBranchTargetStmt
-
flushCollectionCache
public void flushCollectionCache()
- Overrides:
flushCollectionCachein classBranchTargetStmt
-
clone
public ForStmt clone() throws CloneNotSupportedException
- Overrides:
clonein classBranchTargetStmt- Throws:
CloneNotSupportedException
-
fullCopy
public ForStmt fullCopy()
Create a deep copy of the AST subtree at this node. The copy is dangling, i.e. has no parent.
-
toString
public void toString(StringBuffer s)
-
init$Children
public void init$Children()
Initializes the child array to the correct size. Initializes List and Opt nta children.- Overrides:
init$Childrenin classBranchTargetStmt
-
numChildren
protected int numChildren()
- Overrides:
numChildrenin classBranchTargetStmt
-
mayHaveRewrite
public boolean mayHaveRewrite()
- Overrides:
mayHaveRewritein classBranchTargetStmt
-
setInitStmtList
public void setInitStmtList(List<Stmt> list)
Replaces the InitStmt list.- Parameters:
list- The new list node to be used as the InitStmt list.
-
getNumInitStmt
public int getNumInitStmt()
Retrieves the number of children in the InitStmt list.- Returns:
- Number of children in the InitStmt list.
-
getNumInitStmtNoTransform
public int getNumInitStmtNoTransform()
Retrieves the number of children in the InitStmt list. Calling this method will not trigger rewrites..- Returns:
- Number of children in the InitStmt list.
-
getInitStmt
public Stmt getInitStmt(int i)
Retrieves the element at indexiin the InitStmt list..- Parameters:
i- Index of the element to return.- Returns:
- The element at position
iin the InitStmt list.
-
addInitStmt
public void addInitStmt(Stmt node)
Append an element to the InitStmt list.- Parameters:
node- The element to append to the InitStmt list.
-
addInitStmtNoTransform
public void addInitStmtNoTransform(Stmt node)
-
setInitStmt
public void setInitStmt(Stmt node, int i)
Replaces the InitStmt list element at indexiwith the new nodenode.- Parameters:
node- The new node to replace the old list element.i- The list index of the node to be replaced.
-
getInitStmts
public List<Stmt> getInitStmts()
Retrieves the InitStmt list.- Returns:
- The node representing the InitStmt list.
-
getInitStmtsNoTransform
public List<Stmt> getInitStmtsNoTransform()
Retrieves the InitStmt list.This method does not invoke AST transformations.
- Returns:
- The node representing the InitStmt list.
-
getInitStmtList
public List<Stmt> getInitStmtList()
Retrieves the InitStmt list.- Returns:
- The node representing the InitStmt list.
-
getInitStmtListNoTransform
public List<Stmt> getInitStmtListNoTransform()
Retrieves the InitStmt list.This method does not invoke AST transformations.
- Returns:
- The node representing the InitStmt list.
-
setConditionOpt
public void setConditionOpt(Opt<Expr> opt)
Replaces the optional node for the Condition child. This is theOptnode containing the child Condition, not the actual child!- Parameters:
opt- The new node to be used as the optional node for the Condition child.
-
hasCondition
public boolean hasCondition()
Check whether the optional Condition child exists.- Returns:
trueif the optional Condition child exists,falseif it does not.
-
getCondition
public Expr getCondition()
Retrieves the (optional) Condition child.- Returns:
- The Condition child, if it exists. Returns
nullotherwise.
-
setCondition
public void setCondition(Expr node)
Replaces the (optional) Condition child.- Parameters:
node- The new node to be used as the Condition child.
-
getConditionOptNoTransform
public Opt<Expr> getConditionOptNoTransform()
Retrieves the optional node for child Condition. This is theOptnode containing the child Condition, not the actual child!This method does not invoke AST transformations.
- Returns:
- The optional node for child Condition.
-
setUpdateStmtList
public void setUpdateStmtList(List<Stmt> list)
Replaces the UpdateStmt list.- Parameters:
list- The new list node to be used as the UpdateStmt list.
-
getNumUpdateStmt
public int getNumUpdateStmt()
Retrieves the number of children in the UpdateStmt list.- Returns:
- Number of children in the UpdateStmt list.
-
getNumUpdateStmtNoTransform
public int getNumUpdateStmtNoTransform()
Retrieves the number of children in the UpdateStmt list. Calling this method will not trigger rewrites..- Returns:
- Number of children in the UpdateStmt list.
-
getUpdateStmt
public Stmt getUpdateStmt(int i)
Retrieves the element at indexiin the UpdateStmt list..- Parameters:
i- Index of the element to return.- Returns:
- The element at position
iin the UpdateStmt list.
-
addUpdateStmt
public void addUpdateStmt(Stmt node)
Append an element to the UpdateStmt list.- Parameters:
node- The element to append to the UpdateStmt list.
-
addUpdateStmtNoTransform
public void addUpdateStmtNoTransform(Stmt node)
-
setUpdateStmt
public void setUpdateStmt(Stmt node, int i)
Replaces the UpdateStmt list element at indexiwith the new nodenode.- Parameters:
node- The new node to replace the old list element.i- The list index of the node to be replaced.
-
getUpdateStmts
public List<Stmt> getUpdateStmts()
Retrieves the UpdateStmt list.- Returns:
- The node representing the UpdateStmt list.
-
getUpdateStmtsNoTransform
public List<Stmt> getUpdateStmtsNoTransform()
Retrieves the UpdateStmt list.This method does not invoke AST transformations.
- Returns:
- The node representing the UpdateStmt list.
-
getUpdateStmtList
public List<Stmt> getUpdateStmtList()
Retrieves the UpdateStmt list.- Returns:
- The node representing the UpdateStmt list.
-
getUpdateStmtListNoTransform
public List<Stmt> getUpdateStmtListNoTransform()
Retrieves the UpdateStmt list.This method does not invoke AST transformations.
- Returns:
- The node representing the UpdateStmt list.
-
setStmt
public void setStmt(Stmt node)
Replaces the Stmt child.- Parameters:
node- The new node to replace the Stmt child.
-
getStmt
public Stmt getStmt()
Retrieves the Stmt child.- Returns:
- The current node used as the Stmt child.
-
getStmtNoTransform
public Stmt getStmtNoTransform()
Retrieves the Stmt child.This method does not invoke AST transformations.
- Returns:
- The current node used as the Stmt child.
-
targetOf
public boolean targetOf(ContinueStmt stmt)
- Specified by:
targetOfin interfaceBranchPropagation- Specified by:
targetOfin classBranchTargetStmt
-
targetOf
public boolean targetOf(BreakStmt stmt)
- Specified by:
targetOfin interfaceBranchPropagation- Specified by:
targetOfin classBranchTargetStmt
-
isDAafterInitialization
public boolean isDAafterInitialization(Variable v)
-
isDUafterInit
public boolean isDUafterInit(Variable v)
-
isDUbeforeCondition
public boolean isDUbeforeCondition(Variable v)
-
isDUafterUpdate
public boolean isDUafterUpdate(Variable v)
-
localVariableDeclaration
public VariableDeclaration localVariableDeclaration(String name)
-
continueLabel
public boolean continueLabel()
- Overrides:
continueLabelin classStmt
-
canCompleteNormally
public boolean canCompleteNormally()
- Overrides:
canCompleteNormallyin classStmt
-
definesLabel
public boolean definesLabel()
- Overrides:
definesLabelin classASTNode<ASTNode>
-
cond_label
public Stmt cond_label()
-
begin_label
public Stmt begin_label()
-
update_label
public Stmt update_label()
-
end_label
public Stmt end_label()
-
break_label
public Stmt break_label()
- Overrides:
break_labelin classStmt
-
continue_label
public Stmt continue_label()
- Overrides:
continue_labelin classStmt
-
modifiedInScope
public boolean modifiedInScope(Variable var)
- Specified by:
modifiedInScopein classStmt
-
lookupVariable
public SimpleSet lookupVariable(String name)
- Specified by:
lookupVariablein interfaceVariableScope- Overrides:
lookupVariablein classStmt
-
Define_boolean_isDAbefore
public boolean Define_boolean_isDAbefore(ASTNode caller, ASTNode child, Variable v)
- Overrides:
Define_boolean_isDAbeforein classASTNode<ASTNode>
-
Define_boolean_isDUbefore
public boolean Define_boolean_isDUbefore(ASTNode caller, ASTNode child, Variable v)
- Overrides:
Define_boolean_isDUbeforein classASTNode<ASTNode>
-
Define_SimpleSet_lookupVariable
public SimpleSet Define_SimpleSet_lookupVariable(ASTNode caller, ASTNode child, String name)
- Overrides:
Define_SimpleSet_lookupVariablein classASTNode<ASTNode>
-
Define_VariableScope_outerScope
public VariableScope Define_VariableScope_outerScope(ASTNode caller, ASTNode child)
- Overrides:
Define_VariableScope_outerScopein classASTNode<ASTNode>
-
Define_boolean_insideLoop
public boolean Define_boolean_insideLoop(ASTNode caller, ASTNode child)
- Overrides:
Define_boolean_insideLoopin classASTNode<ASTNode>
-
Define_boolean_reachable
public boolean Define_boolean_reachable(ASTNode caller, ASTNode child)
- Overrides:
Define_boolean_reachablein classASTNode<ASTNode>
-
Define_boolean_reportUnreachable
public boolean Define_boolean_reportUnreachable(ASTNode caller, ASTNode child)
- Overrides:
Define_boolean_reportUnreachablein classASTNode<ASTNode>
-
Define_soot_jimple_Stmt_condition_false_label
public Stmt Define_soot_jimple_Stmt_condition_false_label(ASTNode caller, ASTNode child)
- Overrides:
Define_soot_jimple_Stmt_condition_false_labelin classASTNode<ASTNode>
-
Define_soot_jimple_Stmt_condition_true_label
public Stmt Define_soot_jimple_Stmt_condition_true_label(ASTNode caller, ASTNode child)
- Overrides:
Define_soot_jimple_Stmt_condition_true_labelin classASTNode<ASTNode>
-
rewriteTo
public ASTNode rewriteTo()
- Overrides:
rewriteToin classBranchTargetStmt
-
-