Class PropagationGraph

  • All Implemented Interfaces:
    com.ibm.wala.fixpoint.IFixedPointSystem<PointsToSetVariable>

    public class PropagationGraph
    extends java.lang.Object
    implements com.ibm.wala.fixpoint.IFixedPointSystem<PointsToSetVariable>
    A dataflow graph implementation specialized for propagation-based pointer analysis
    • Constructor Detail

      • PropagationGraph

        public PropagationGraph()
    • Method Detail

      • addStatement

        public void addStatement​(com.ibm.wala.fixedpoint.impl.GeneralStatement<PointsToSetVariable> eq)
        Throws:
        java.lang.IllegalArgumentException - if eq is null
      • addStatement

        public void addStatement​(com.ibm.wala.fixpoint.UnaryStatement<PointsToSetVariable> eq)
                          throws java.lang.IllegalArgumentException
        Throws:
        java.lang.IllegalArgumentException
      • getStatements

        public java.util.Iterator<com.ibm.wala.fixpoint.AbstractStatement> getStatements()
        Specified by:
        getStatements in interface com.ibm.wala.fixpoint.IFixedPointSystem<PointsToSetVariable>
      • removeStatement

        public void removeStatement​(com.ibm.wala.fixpoint.IFixedPointStatement<PointsToSetVariable> eq)
                             throws java.lang.IllegalArgumentException
        Specified by:
        removeStatement in interface com.ibm.wala.fixpoint.IFixedPointSystem<PointsToSetVariable>
        Throws:
        java.lang.IllegalArgumentException
      • reorder

        public void reorder()
        Specified by:
        reorder in interface com.ibm.wala.fixpoint.IFixedPointSystem<PointsToSetVariable>
      • getStatementsThatUse

        public java.util.Iterator<com.ibm.wala.fixpoint.AbstractStatement> getStatementsThatUse​(PointsToSetVariable v)
        Specified by:
        getStatementsThatUse in interface com.ibm.wala.fixpoint.IFixedPointSystem<PointsToSetVariable>
      • getNumberOfStatementsThatUse

        public int getNumberOfStatementsThatUse​(PointsToSetVariable v)
        Note that this implementation consults the implicit relation for each and every operator cached. This will be inefficient if there are many implicit operators.
        Specified by:
        getNumberOfStatementsThatUse in interface com.ibm.wala.fixpoint.IFixedPointSystem<PointsToSetVariable>
        Throws:
        java.lang.IllegalArgumentException - if v is null
      • getNumberOfStatementsThatDef

        public int getNumberOfStatementsThatDef​(PointsToSetVariable v)
        Specified by:
        getNumberOfStatementsThatDef in interface com.ibm.wala.fixpoint.IFixedPointSystem<PointsToSetVariable>
      • performVerboseAction

        public void performVerboseAction()
        See Also:
        VerboseAction.performVerboseAction()
      • containsStatement

        public boolean containsStatement​(com.ibm.wala.fixpoint.IFixedPointStatement<PointsToSetVariable> eq)
                                  throws java.lang.IllegalArgumentException
        Specified by:
        containsStatement in interface com.ibm.wala.fixpoint.IFixedPointSystem<PointsToSetVariable>
        Throws:
        java.lang.IllegalArgumentException
      • addStatement

        public void addStatement​(com.ibm.wala.fixpoint.IFixedPointStatement<PointsToSetVariable> statement)
                          throws java.lang.IllegalArgumentException,
                                 com.ibm.wala.util.debug.UnimplementedError
        Specified by:
        addStatement in interface com.ibm.wala.fixpoint.IFixedPointSystem<PointsToSetVariable>
        Throws:
        java.lang.IllegalArgumentException
        com.ibm.wala.util.debug.UnimplementedError
      • getAssignmentGraph

        public com.ibm.wala.util.graph.NumberedGraph<PointsToSetVariable> getAssignmentGraph()
        A graph of just the variables in the system. v1 -> v2 iff there exists an assignment equation e s.t. e uses v1 and e defs v2.
      • getFilterAssignmentGraph

        public com.ibm.wala.util.graph.Graph<PointsToSetVariable> getFilterAssignmentGraph()
        A graph of just the variables in the system. v1 -> v2 iff there exists an Assingnment or Filter equation e s.t. e uses v1 and e defs v2.
      • getFlowGraphIncludingImplicitConstraints

        public com.ibm.wala.util.graph.Graph<PointsToSetVariable> getFlowGraphIncludingImplicitConstraints()
        NOTE: do not use this method unless you really know what you are doing. Functionality is fragile and may not work in the future.
      • spaceReport

        public java.lang.String spaceReport()