Package com.ibm.wala.shrikeBT.analysis
Class Analyzer
- java.lang.Object
-
- com.ibm.wala.shrikeBT.analysis.Analyzer
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Analyzer.FailureException
This exception is thrown by verify() when it fails.static class
Analyzer.PathElement
class
Analyzer.TypeVisitor
-
Field Summary
Fields Modifier and Type Field Description protected int[][]
backEdges
protected BitSet
basicBlockStarts
protected String
classType
protected ExceptionHandler[][]
handlers
protected ClassHierarchyProvider
hierarchy
protected IInstruction[]
instructions
protected int[]
instToBC
protected boolean
isConstructor
protected boolean
isStatic
protected String[][]
locals
protected int
maxLocals
protected int
maxStack
protected static int[]
noEdges
protected static String[]
noStrings
protected String
signature
protected String[][]
stacks
protected int[]
stackSizes
static String
thisType
static String
topType
protected String[][]
varTypes
-
Constructor Summary
Constructors Modifier Constructor Description Analyzer(boolean isConstructor, boolean isStatic, String classType, String signature, IInstruction[] instructions, ExceptionHandler[][] handlers, int[] instToBC, String[][] vars)
protected
Analyzer(MethodData info)
protected
Analyzer(MethodData info, int[] instToBC, String[][] vars)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
computeTypes(Analyzer.TypeVisitor v, BitSet makeTypesAt, boolean wantPath)
Verify the method and compute types at every program point.static Analyzer
createAnalyzer(MethodData info)
String
findCommonSupertype(String t1, String t2)
int[][]
getBackEdges()
BitSet
getBasicBlockStarts()
IInstruction[]
getInstructions()
String[][]
getLocalTypes()
BitSet
getReachableFrom(int from)
BitSet
getReachableFrom(int from, boolean followHandlers, BitSet mask)
void
getReachableFromUpdate(int from, BitSet reachable, boolean followHandlers, BitSet mask)
void
getReachingToUpdate(int to, BitSet reaching, BitSet mask)
int[]
getStackSizes()
String[][]
getStackTypes()
protected void
initTypeInfo()
boolean
isSubtypeOf(String t1, String t2)
void
setClassHierarchy(ClassHierarchyProvider h)
Use class hierarchy information in 'h'.static String
stripSharp(String type)
-
-
-
Field Detail
-
thisType
public static final String thisType
- See Also:
- Constant Field Values
-
topType
public static final String topType
- See Also:
- Constant Field Values
-
isConstructor
protected final boolean isConstructor
-
isStatic
protected final boolean isStatic
-
classType
protected final String classType
-
signature
protected final String signature
-
instructions
protected final IInstruction[] instructions
-
handlers
protected final ExceptionHandler[][] handlers
-
hierarchy
protected ClassHierarchyProvider hierarchy
-
maxStack
protected int maxStack
-
maxLocals
protected int maxLocals
-
stacks
protected String[][] stacks
-
locals
protected String[][] locals
-
stackSizes
protected int[] stackSizes
-
basicBlockStarts
protected BitSet basicBlockStarts
-
backEdges
protected int[][] backEdges
-
instToBC
protected int[] instToBC
-
varTypes
protected String[][] varTypes
-
noStrings
protected static final String[] noStrings
-
noEdges
protected static final int[] noEdges
-
-
Constructor Detail
-
Analyzer
public Analyzer(boolean isConstructor, boolean isStatic, String classType, String signature, IInstruction[] instructions, ExceptionHandler[][] handlers, int[] instToBC, String[][] vars)
-
Analyzer
protected Analyzer(MethodData info)
-
Analyzer
protected Analyzer(MethodData info, int[] instToBC, String[][] vars)
-
-
Method Detail
-
setClassHierarchy
public final void setClassHierarchy(ClassHierarchyProvider h)
Use class hierarchy information in 'h'. If this method is not called or h provides only partial hierarchy information, the verifier behaves optimistically.
-
getBackEdges
public final int[][] getBackEdges()
-
getBasicBlockStarts
public final BitSet getBasicBlockStarts()
-
getInstructions
public final IInstruction[] getInstructions()
-
getReachableFrom
public final BitSet getReachableFrom(int from)
-
getReachableFromUpdate
public final void getReachableFromUpdate(int from, BitSet reachable, boolean followHandlers, BitSet mask)
-
getReachableFrom
public final BitSet getReachableFrom(int from, boolean followHandlers, BitSet mask)
-
getStackSizes
public int[] getStackSizes() throws Analyzer.FailureException
- Throws:
Analyzer.FailureException
-
initTypeInfo
protected final void initTypeInfo() throws Analyzer.FailureException
- Throws:
Analyzer.FailureException
-
computeTypes
public final void computeTypes(Analyzer.TypeVisitor v, BitSet makeTypesAt, boolean wantPath) throws Analyzer.FailureException
Verify the method and compute types at every program point.- Throws:
Analyzer.FailureException
- the method contains invalid bytecode
-
getLocalTypes
public final String[][] getLocalTypes()
- Returns:
- an array indexed by instruction index; each entry is an array of Strings giving the types of the locals at that instruction.
-
getStackTypes
public final String[][] getStackTypes()
- Returns:
- an array indexed by instruction index; each entry is an array of Strings giving the types of the stack elements at that instruction. The top of the stack is the last element of the array.
-
createAnalyzer
public static Analyzer createAnalyzer(MethodData info)
-
-