Package com.ensoftcorp.open.cg.analysis
Class FieldTypeAnalysis
- java.lang.Object
-
- com.ensoftcorp.open.cg.analysis.CGAnalysis
-
- com.ensoftcorp.open.cg.analysis.FieldTypeAnalysis
-
public class FieldTypeAnalysis extends CGAnalysis
Performs a Field Type Analysis (FTA), which is a modification to RTA discussed in the paper: Scalable Propagation-Based Call Graph Construction Algorithms by Frank Tip and Jens Palsberg. In terms of call graph construction precision this algorithm ranks better than RTA but worse than a 0-CFA. Reference: http://web.cs.ucla.edu/~palsberg/paper/oopsla00.pdf- Author:
- Ben Holland
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
CALL
static java.lang.String
PER_CONTROL_FLOW
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String[]
getCallEdgeTags()
Returns the set of tags applied to edges during call graph constructionstatic FieldTypeAnalysis
getInstance()
java.lang.String
getName()
java.lang.String[]
getPerControlFlowEdgeTags()
Returns the set of tags applied to per control flow edges during call graph constructionstatic void
updateCallGraph(java.util.LinkedList<com.ensoftcorp.atlas.core.db.graph.Node> worklist, com.ensoftcorp.atlas.core.db.set.AtlasSet<com.ensoftcorp.atlas.core.db.graph.Edge> cgFTA, com.ensoftcorp.atlas.core.db.graph.Node method, com.ensoftcorp.atlas.core.db.set.AtlasSet<com.ensoftcorp.atlas.core.db.graph.Node> allocationTypes, com.ensoftcorp.atlas.core.db.graph.Edge callEdge, com.ensoftcorp.atlas.core.db.graph.Node calledMethod)
Updates the call graph and worklist for methods and fields-
Methods inherited from class com.ensoftcorp.open.cg.analysis.CGAnalysis
getCallGraph, getPerControlFlowGraph, hasRun, run
-
-
-
-
Field Detail
-
CALL
public static final java.lang.String CALL
- See Also:
- Constant Field Values
-
PER_CONTROL_FLOW
public static final java.lang.String PER_CONTROL_FLOW
- See Also:
- Constant Field Values
-
-
Method Detail
-
getInstance
public static FieldTypeAnalysis getInstance()
-
updateCallGraph
public static void updateCallGraph(java.util.LinkedList<com.ensoftcorp.atlas.core.db.graph.Node> worklist, com.ensoftcorp.atlas.core.db.set.AtlasSet<com.ensoftcorp.atlas.core.db.graph.Edge> cgFTA, com.ensoftcorp.atlas.core.db.graph.Node method, com.ensoftcorp.atlas.core.db.set.AtlasSet<com.ensoftcorp.atlas.core.db.graph.Node> allocationTypes, com.ensoftcorp.atlas.core.db.graph.Edge callEdge, com.ensoftcorp.atlas.core.db.graph.Node calledMethod)
Updates the call graph and worklist for methods and fields- Parameters:
worklist
-cgFTA
-method
-allocationTypes
-callEdge
-calledMethod
-
-
getCallEdgeTags
public java.lang.String[] getCallEdgeTags()
Description copied from class:CGAnalysis
Returns the set of tags applied to edges during call graph construction- Specified by:
getCallEdgeTags
in classCGAnalysis
- Returns:
-
getPerControlFlowEdgeTags
public java.lang.String[] getPerControlFlowEdgeTags()
Description copied from class:CGAnalysis
Returns the set of tags applied to per control flow edges during call graph construction- Specified by:
getPerControlFlowEdgeTags
in classCGAnalysis
- Returns:
-
getName
public java.lang.String getName()
- Specified by:
getName
in classCGAnalysis
-
-