Class PointsTo

  • Direct Known Subclasses:
    JavaPointsTo, JimplePointsTo

    public abstract class PointsTo
    extends java.lang.Object
    An abstract class defining the features that a points-to analyzer should implement.
    Author:
    Ben Holland
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static long UPDATE_INTERVAL  
    • Constructor Summary

      Constructors 
      Constructor Description
      PointsTo()  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      abstract void addAliasAddress​(com.ensoftcorp.atlas.core.db.graph.Node node, java.lang.Integer address)
      Removes an alias address from the alias set
      abstract void dispose()
      Signals that the points to analysis results no longer need to be maintained by the analysis
      abstract com.ensoftcorp.atlas.core.db.set.AtlasSet<com.ensoftcorp.atlas.core.db.graph.Node> getAddressedNodes()
      Returns a set of all addressed nodes
      abstract java.util.HashSet<java.lang.Integer> getAliasAddresses()
      Returns a set of alias addresses
      abstract java.util.HashSet<java.lang.Integer> getAliasAddresses​(com.ensoftcorp.atlas.core.db.graph.Node node)
      Returns a set of alias addresses for the given node
      abstract java.util.HashSet<java.lang.Integer> getArrayMemoryModelAliases​(java.lang.Integer address)
      Returns the mapping of arrays to the array's components
      abstract java.util.HashSet<java.lang.Integer> getArrayMemoryModels()
      Returns the array memory model addresses
      abstract com.ensoftcorp.atlas.core.db.graph.Graph getInferredDataFlowGraph()
      Returns the inferred data flow graph as the results of the fixed point analysis
      abstract com.ensoftcorp.atlas.core.db.graph.Node getInstantiation​(java.lang.Integer address)
      Returns the mapping of an address to its corresponding instantiation
      abstract com.ensoftcorp.atlas.core.db.graph.Node getType​(java.lang.Integer address)
      Returns the mapping of an address to its corresponding static type
      boolean hasRun()
      Returns true if the points-to analysis has completed
      boolean isDisposed()  
      abstract void removeAliasAddress​(com.ensoftcorp.atlas.core.db.graph.Node node, java.lang.Integer address)
      Adds an alias address to the alias set
      double run()
      Runs the points to analysis (if it hasn't been run already) and returns the time in milliseconds to complete the analysis
      • Methods inherited from class java.lang.Object

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

      • PointsTo

        public PointsTo()
    • Method Detail

      • hasRun

        public boolean hasRun()
        Returns true if the points-to analysis has completed
        Returns:
      • run

        public double run()
        Runs the points to analysis (if it hasn't been run already) and returns the time in milliseconds to complete the analysis
        Returns:
      • getArrayMemoryModelAliases

        public abstract java.util.HashSet<java.lang.Integer> getArrayMemoryModelAliases​(java.lang.Integer address)
        Returns the mapping of arrays to the array's components
        Returns:
      • getArrayMemoryModels

        public abstract java.util.HashSet<java.lang.Integer> getArrayMemoryModels()
        Returns the array memory model addresses
        Returns:
      • getAliasAddresses

        public abstract java.util.HashSet<java.lang.Integer> getAliasAddresses()
        Returns a set of alias addresses
        Parameters:
        node -
        Returns:
      • getAliasAddresses

        public abstract java.util.HashSet<java.lang.Integer> getAliasAddresses​(com.ensoftcorp.atlas.core.db.graph.Node node)
        Returns a set of alias addresses for the given node
        Parameters:
        node -
        Returns:
      • addAliasAddress

        public abstract void addAliasAddress​(com.ensoftcorp.atlas.core.db.graph.Node node,
                                             java.lang.Integer address)
        Removes an alias address from the alias set
        Parameters:
        node -
      • removeAliasAddress

        public abstract void removeAliasAddress​(com.ensoftcorp.atlas.core.db.graph.Node node,
                                                java.lang.Integer address)
        Adds an alias address to the alias set
        Parameters:
        node -
      • getInstantiation

        public abstract com.ensoftcorp.atlas.core.db.graph.Node getInstantiation​(java.lang.Integer address)
        Returns the mapping of an address to its corresponding instantiation
        Returns:
      • getType

        public abstract com.ensoftcorp.atlas.core.db.graph.Node getType​(java.lang.Integer address)
        Returns the mapping of an address to its corresponding static type
        Returns:
      • getAddressedNodes

        public abstract com.ensoftcorp.atlas.core.db.set.AtlasSet<com.ensoftcorp.atlas.core.db.graph.Node> getAddressedNodes()
        Returns a set of all addressed nodes
        Returns:
      • getInferredDataFlowGraph

        public abstract com.ensoftcorp.atlas.core.db.graph.Graph getInferredDataFlowGraph()
        Returns the inferred data flow graph as the results of the fixed point analysis
        Returns:
      • isDisposed

        public boolean isDisposed()
      • dispose

        public abstract void dispose()
        Signals that the points to analysis results no longer need to be maintained by the analysis