Class 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 construction
      static FieldTypeAnalysis getInstance()  
      java.lang.String getName()  
      java.lang.String[] getPerControlFlowEdgeTags()
      Returns the set of tags applied to per control flow edges during call graph construction
      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
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • 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 class CGAnalysis
        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 class CGAnalysis
        Returns:
      • getName

        public java.lang.String getName()
        Specified by:
        getName in class CGAnalysis