Class IPCGFactory


  • public class IPCGFactory
    extends java.lang.Object
    A class that implements the event flow graph transformations to transform a given CFG into ICFGPCG
    Author:
    Ahmed Tamrawi, Ben Holland, Ganesh Ram Santhanam, Jon Mathews, Nikhil Ranade
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static ICFGPCG create​(com.ensoftcorp.atlas.core.query.Q events)
      Construct the PCGs corresponding to the given events with the containing functions control flow graph
      static ICFGPCG create​(com.ensoftcorp.atlas.core.query.Q events, boolean labelBackEdges)
      Construct the PCGs corresponding to the given events with the containing functions control flow graph
      static ICFGPCG create​(com.ensoftcorp.atlas.core.query.Q cfg, com.ensoftcorp.atlas.core.query.Q events)
      Construct the PCGs corresponding to the given events and control flow graph
      static ICFGPCG create​(com.ensoftcorp.atlas.core.query.Q cfg, com.ensoftcorp.atlas.core.query.Q events, boolean labelBackEdges)
      Construct the PCGs corresponding to the given events and control flow graph
      static ICFGPCG create​(com.ensoftcorp.atlas.core.query.Q cfg, com.ensoftcorp.atlas.core.query.Q cfRoots, com.ensoftcorp.atlas.core.query.Q cfExits, com.ensoftcorp.atlas.core.query.Q events)
      Construct the ICFGPCG for the given CFG, selected CFG roots, and the events of interest.
      static ICFGPCG create​(com.ensoftcorp.atlas.core.query.Q cfg, com.ensoftcorp.atlas.core.query.Q cfRoots, com.ensoftcorp.atlas.core.query.Q cfExits, com.ensoftcorp.atlas.core.query.Q events, boolean labelBackEdges)
      Construct the ICFGPCG for the given CFG, selected CFG roots, and the events of interest.
      static ICFGPCG create​(com.ensoftcorp.open.commons.algorithms.UniqueEntryExitInterproceduralControlFlowGraph uicfg, com.ensoftcorp.atlas.core.query.Q events)
      Constructs a ICFGPCG for the given unique entry/exit control flow graph and a set of events
      static ICFGPCG create​(com.ensoftcorp.open.commons.algorithms.UniqueEntryExitInterproceduralControlFlowGraph uicfg, com.ensoftcorp.atlas.core.query.Q events, boolean labelBackEdges)
      Constructs a ICFGPCG for the given unique entry/exit control flow graph and a set of events.
      static com.ensoftcorp.atlas.core.db.set.AtlasSet<com.ensoftcorp.atlas.core.db.graph.Node> createNodesOnly​(com.ensoftcorp.atlas.core.query.Q events)
      Constructs the ICFGPCG corresponding to the given events within the containing control flow graph and returns only the nodes in the resulting ICFGPCG.
      static com.ensoftcorp.atlas.core.db.set.AtlasSet<com.ensoftcorp.atlas.core.db.graph.Node> createNodesOnly​(com.ensoftcorp.atlas.core.query.Q events, com.ensoftcorp.atlas.core.query.Q cfg)
      Construct the PCGs corresponding to the given events and control flow graph and returns only the nodes in the resulting ICFGPCG.
      static com.ensoftcorp.atlas.core.db.set.AtlasSet<com.ensoftcorp.atlas.core.db.graph.Node> createNodesOnly​(com.ensoftcorp.atlas.core.query.Q cfg, com.ensoftcorp.atlas.core.query.Q cfRoots, com.ensoftcorp.atlas.core.query.Q cfExits, com.ensoftcorp.atlas.core.query.Q events)
      Construct the ICFGPCG for the given CFG, selected CFG roots, and the events of interest.
      static com.ensoftcorp.atlas.core.db.set.AtlasSet<com.ensoftcorp.atlas.core.db.graph.Node> createNodesOnly​(com.ensoftcorp.open.commons.algorithms.UniqueEntryExitInterproceduralControlFlowGraph uicfg, com.ensoftcorp.atlas.core.query.Q events)
      Constructs a ICFGPCG for the given unique entry/exit control flow graph and a set of events and returns only the nodes in the resulting ICFGPCG.
      • Methods inherited from class java.lang.Object

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

      • createNodesOnly

        public static com.ensoftcorp.atlas.core.db.set.AtlasSet<com.ensoftcorp.atlas.core.db.graph.Node> createNodesOnly​(com.ensoftcorp.atlas.core.query.Q events)
        Constructs the ICFGPCG corresponding to the given events within the containing control flow graph and returns only the nodes in the resulting ICFGPCG. This result is much cheaper to compute than PCGFactory.create alternatives which include ICFGPCG edges.
        Parameters:
        events -
        Returns:
      • createNodesOnly

        public static com.ensoftcorp.atlas.core.db.set.AtlasSet<com.ensoftcorp.atlas.core.db.graph.Node> createNodesOnly​(com.ensoftcorp.atlas.core.query.Q events,
                                                                                                                         com.ensoftcorp.atlas.core.query.Q cfg)
        Construct the PCGs corresponding to the given events and control flow graph and returns only the nodes in the resulting ICFGPCG. This result is much cheaper to compute than PCGFactory.create alternatives which include ICFGPCG edges.
        Parameters:
        function -
        events -
        Returns:
      • createNodesOnly

        public static com.ensoftcorp.atlas.core.db.set.AtlasSet<com.ensoftcorp.atlas.core.db.graph.Node> createNodesOnly​(com.ensoftcorp.atlas.core.query.Q cfg,
                                                                                                                         com.ensoftcorp.atlas.core.query.Q cfRoots,
                                                                                                                         com.ensoftcorp.atlas.core.query.Q cfExits,
                                                                                                                         com.ensoftcorp.atlas.core.query.Q events)
        Construct the ICFGPCG for the given CFG, selected CFG roots, and the events of interest. Note that roots, exits, and events must all be contained within the given cfg and returns only the nodes in the resulting ICFGPCG. This result is much cheaper to compute than PCGFactory.create alternatives which include ICFGPCG edges.
        Parameters:
        cfg -
        function -
        events -
        Returns:
      • createNodesOnly

        public static com.ensoftcorp.atlas.core.db.set.AtlasSet<com.ensoftcorp.atlas.core.db.graph.Node> createNodesOnly​(com.ensoftcorp.open.commons.algorithms.UniqueEntryExitInterproceduralControlFlowGraph uicfg,
                                                                                                                         com.ensoftcorp.atlas.core.query.Q events)
        Constructs a ICFGPCG for the given unique entry/exit control flow graph and a set of events and returns only the nodes in the resulting ICFGPCG. This result is much cheaper to compute than PCGFactory.create alternatives which include ICFGPCG edges.
        Parameters:
        uicfg -
        events -
        Returns:
      • create

        public static ICFGPCG create​(com.ensoftcorp.atlas.core.query.Q events)
        Construct the PCGs corresponding to the given events with the containing functions control flow graph
        Parameters:
        function -
        events -
        Returns:
        ICFGPCG
      • create

        public static ICFGPCG create​(com.ensoftcorp.atlas.core.query.Q events,
                                     boolean labelBackEdges)
        Construct the PCGs corresponding to the given events with the containing functions control flow graph
        Parameters:
        events -
        labelBackEdges -
        Returns:
      • create

        public static ICFGPCG create​(com.ensoftcorp.atlas.core.query.Q cfg,
                                     com.ensoftcorp.atlas.core.query.Q events)
        Construct the PCGs corresponding to the given events and control flow graph
        Parameters:
        function -
        events -
        Returns:
        ICFGPCG
      • create

        public static ICFGPCG create​(com.ensoftcorp.atlas.core.query.Q cfg,
                                     com.ensoftcorp.atlas.core.query.Q events,
                                     boolean labelBackEdges)
        Construct the PCGs corresponding to the given events and control flow graph
        Parameters:
        cfg -
        events -
        labelBackEdges -
        Returns:
      • create

        public static ICFGPCG create​(com.ensoftcorp.atlas.core.query.Q cfg,
                                     com.ensoftcorp.atlas.core.query.Q cfRoots,
                                     com.ensoftcorp.atlas.core.query.Q cfExits,
                                     com.ensoftcorp.atlas.core.query.Q events)
        Construct the ICFGPCG for the given CFG, selected CFG roots, and the events of interest. Note that roots, exits, and events must all be contained within the given cfg.
        Parameters:
        cfg -
        function -
        events -
        Returns:
        ICFGPCG
      • create

        public static ICFGPCG create​(com.ensoftcorp.atlas.core.query.Q cfg,
                                     com.ensoftcorp.atlas.core.query.Q cfRoots,
                                     com.ensoftcorp.atlas.core.query.Q cfExits,
                                     com.ensoftcorp.atlas.core.query.Q events,
                                     boolean labelBackEdges)
        Construct the ICFGPCG for the given CFG, selected CFG roots, and the events of interest. Note that roots, exits, and events must all be contained within the given cfg.
        Parameters:
        cfg -
        cfRoots -
        cfExits -
        events -
        Returns:
      • create

        public static ICFGPCG create​(com.ensoftcorp.open.commons.algorithms.UniqueEntryExitInterproceduralControlFlowGraph uicfg,
                                     com.ensoftcorp.atlas.core.query.Q events)
        Constructs a ICFGPCG for the given unique entry/exit control flow graph and a set of events
        Parameters:
        uicfg -
        events -
        Returns:
      • create

        public static ICFGPCG create​(com.ensoftcorp.open.commons.algorithms.UniqueEntryExitInterproceduralControlFlowGraph uicfg,
                                     com.ensoftcorp.atlas.core.query.Q events,
                                     boolean labelBackEdges)
        Constructs a ICFGPCG for the given unique entry/exit control flow graph and a set of events.
        Parameters:
        uicfg -
        events -
        labelBackEdges -
        Returns: