public class ChainTools
extends java.lang.Object
| Modifier and Type | Class and Description |
|---|---|
static class |
ChainTools.MyType |
| Modifier and Type | Field and Description |
|---|---|
static java.util.HashMap<java.lang.Integer,java.util.HashMap<ChainTools.MyType,java.lang.Boolean>> |
typeCache |
| Constructor and Description |
|---|
ChainTools() |
| Modifier and Type | Method and Description |
|---|---|
static java.lang.String[] |
expandArguments(java.lang.String[] args,
java.lang.String suffix) |
static java.util.List<Expression> |
getDefListInDec(VariableDeclarator declarator) |
static java.util.List<Expression> |
getDefListInNestedDec(NestedDeclarator declarator) |
static java.util.Set<Symbol> |
getDefSymbol(AnalysisTarget[] defArray,
Procedure proc) |
static java.util.Set<Symbol> |
getDefSymbol(java.util.Set<AnalysisTarget> defSet,
Procedure proc) |
static IDExpression |
getIDExpression(Expression ex) |
static Expression |
getIDVariableOnlyInStruct(Expression currentEx) |
static Expression |
getIDVariablePlusMemberInStruct(Expression currentEx) |
static Expression |
getMemberOnlyInStruct(Expression currentEx) |
static Procedure |
getParentProcedure(Traversable trav,
Program program) |
static java.util.List<Expression> |
getPlainDefList(Traversable tr,
Procedure proc)
This returns the definition list in the plain assignment statement;
|
static java.util.Set<Procedure> |
getProcedureSet(Program program) |
static IDExpression |
getRefIDExpression(Expression ex,
Procedure proc)
Extract the variable ID from the input expression.
|
static java.util.List<Expression> |
getRefIDExpressionListInConditionalExpressionArg(ConditionalExpression conEx,
Procedure proc) |
static java.util.List<Expression> |
getSideEffectParamList(java.util.List<Expression> paramList,
int[] sideEffectIdx) |
static java.util.List<Expression> |
getUseList(Traversable traversable) |
static java.util.List<Expression> |
getUseListInDec(VariableDeclarator declarator) |
static java.util.List<Expression> |
getUseListInNestedDec(NestedDeclarator declarator) |
static boolean |
hasSameArrayAccessInStruct(Expression def,
Expression use,
Procedure proc) |
static boolean |
hasSameArrayIdentifier(Expression ex1,
Expression ex2) |
static boolean |
hasSameStructureVariableIdentifier(Expression def,
Expression use,
Procedure proc) |
static boolean |
hasSameToString(Expression ex1,
Expression ex2) |
static boolean |
isArrayAccess(Expression expression) |
static boolean |
isArrayAccessInStruct(Expression expression,
Procedure proc) |
static boolean |
isArrayAccessWithConstantIndex(Expression expression) |
static boolean |
isArrayAccessWithNoIndex(Expression expression) |
static boolean |
isArrayAccessWithPartiallyConstantIndex(Expression expression) |
static boolean |
isArrayAccessWithVariableIndex(Expression expression) |
static boolean |
isDefinedArrayDeclarator(VariableDeclarator vd) |
static boolean |
isDefinedArrayNestedDeclarator(NestedDeclarator vd) |
static boolean |
isDefInItself(DFANode defNode,
Expression defEx,
Expression useEx) |
static boolean |
isEntryNode(DFANode node,
CFGraph cfg) |
static boolean |
isExitNode(DFANode node,
CFGraph cfg) |
static boolean |
isGlobal(Expression expression) |
static boolean |
isIdentical(java.lang.Object obj1,
java.lang.Object obj2) |
static boolean |
isNestedDefInItself(DFANode defNode,
Expression defEx,
Expression useEx) |
static boolean |
isNonConstReferenceTypeParameter(VariableDeclaration varDec) |
static boolean |
isPointerAccess(Expression expression) |
static boolean |
isStructureAccess(Expression expression,
Procedure proc) |
static boolean |
isStructureAccessInDec(Expression expression,
Procedure proc) |
static boolean |
isStructureAccessInParam(Expression expression,
Procedure proc) |
static void |
listDirectory(java.util.List<java.io.File> fileList,
java.util.Set<java.io.File> dirSet,
java.lang.String directory,
java.io.FilenameFilter filter) |
static boolean |
matchArrayAccessForKill(Expression defMapEntryExp,
Expression currentEx) |
static boolean |
matchExpressionForKill(Expression defMapEntry,
Expression currentEx) |
static boolean |
matchIdInExpression(Expression ex1,
Expression ex2) |
static boolean |
matchPointerExForKill(Expression defMapEntry,
Expression currentEx) |
static boolean |
matchRefIdInExpression(Expression ex1,
Expression ex2,
Procedure proc) |
static void |
setGenBit(DFANode cfgNode,
AnalysisTarget[] defMapEntry,
Expression currentEx) |
static void |
setInBit(DFANode cfgNode,
int idx) |
static void |
setKillBit(DFANode cfgNode,
AnalysisTarget[] defMapEntry,
Expression currentEx,
Procedure proc) |
static void |
setKillBitForAlias(DFANode cfgNode,
AnalysisTarget[] defMapEntry,
Expression currentEx,
Statement currentStmt,
Procedure proc) |
static void |
setOutBit(DFANode cfgNode,
int idx) |
static void |
traverseIR(Traversable tr) |
public static java.util.HashMap<java.lang.Integer,java.util.HashMap<ChainTools.MyType,java.lang.Boolean>> typeCache
public static boolean isDefinedArrayDeclarator(VariableDeclarator vd)
public static boolean isDefinedArrayNestedDeclarator(NestedDeclarator vd)
public static java.lang.String[] expandArguments(java.lang.String[] args,
java.lang.String suffix)
public static void listDirectory(java.util.List<java.io.File> fileList,
java.util.Set<java.io.File> dirSet,
java.lang.String directory,
java.io.FilenameFilter filter)
public static boolean isNonConstReferenceTypeParameter(VariableDeclaration varDec)
public static java.util.List<Expression> getRefIDExpressionListInConditionalExpressionArg(ConditionalExpression conEx, Procedure proc)
public static void traverseIR(Traversable tr)
public static Procedure getParentProcedure(Traversable trav, Program program)
public static boolean hasSameToString(Expression ex1, Expression ex2)
public static boolean hasSameStructureVariableIdentifier(Expression def, Expression use, Procedure proc)
public static boolean hasSameArrayAccessInStruct(Expression def, Expression use, Procedure proc)
public static boolean hasSameArrayIdentifier(Expression ex1, Expression ex2)
public static boolean isArrayAccessWithConstantIndex(Expression expression)
public static boolean isArrayAccessWithPartiallyConstantIndex(Expression expression)
public static boolean isArrayAccessWithVariableIndex(Expression expression)
public static boolean isArrayAccessWithNoIndex(Expression expression)
public static boolean isArrayAccess(Expression expression)
public static boolean isArrayAccessInStruct(Expression expression, Procedure proc)
public static java.util.List<Expression> getDefListInDec(VariableDeclarator declarator)
public static java.util.List<Expression> getDefListInNestedDec(NestedDeclarator declarator)
public static java.util.List<Expression> getUseListInDec(VariableDeclarator declarator)
public static java.util.List<Expression> getUseListInNestedDec(NestedDeclarator declarator)
public static void setGenBit(DFANode cfgNode, AnalysisTarget[] defMapEntry, Expression currentEx)
public static boolean isStructureAccessInParam(Expression expression, Procedure proc)
public static boolean isStructureAccessInDec(Expression expression, Procedure proc)
public static boolean isStructureAccess(Expression expression, Procedure proc)
public static boolean isPointerAccess(Expression expression)
public static Expression getIDVariablePlusMemberInStruct(Expression currentEx)
public static Expression getIDVariableOnlyInStruct(Expression currentEx)
public static Expression getMemberOnlyInStruct(Expression currentEx)
public static void setKillBitForAlias(DFANode cfgNode, AnalysisTarget[] defMapEntry, Expression currentEx, Statement currentStmt, Procedure proc)
public static void setKillBit(DFANode cfgNode, AnalysisTarget[] defMapEntry, Expression currentEx, Procedure proc)
public static void setInBit(DFANode cfgNode, int idx)
public static void setOutBit(DFANode cfgNode, int idx)
public static boolean matchArrayAccessForKill(Expression defMapEntryExp, Expression currentEx)
public static boolean matchExpressionForKill(Expression defMapEntry, Expression currentEx)
public static boolean matchPointerExForKill(Expression defMapEntry, Expression currentEx)
public static boolean isGlobal(Expression expression)
public static boolean isDefInItself(DFANode defNode, Expression defEx, Expression useEx)
public static boolean isNestedDefInItself(DFANode defNode, Expression defEx, Expression useEx)
public static java.util.List<Expression> getSideEffectParamList(java.util.List<Expression> paramList, int[] sideEffectIdx)
public static boolean matchIdInExpression(Expression ex1, Expression ex2)
public static boolean matchRefIdInExpression(Expression ex1, Expression ex2, Procedure proc)
public static IDExpression getIDExpression(Expression ex)
public static IDExpression getRefIDExpression(Expression ex, Procedure proc)
ex - proc - public static boolean isIdentical(java.lang.Object obj1,
java.lang.Object obj2)
public static java.util.List<Expression> getUseList(Traversable traversable)
public static java.util.Set<Symbol> getDefSymbol(java.util.Set<AnalysisTarget> defSet, Procedure proc)
public static java.util.Set<Symbol> getDefSymbol(AnalysisTarget[] defArray, Procedure proc)
public static java.util.List<Expression> getPlainDefList(Traversable tr, Procedure proc)
tr -