Interface IBackwardFlowFunction

    • Method Detail

      • returnFlow

        Collection<Val> returnFlow​(Method callee,
                                   Statement returnStmt,
                                   Val returnedVal)
        Called by the backward analysis, when the backward solver reaches the returnStmt (first statement of callee method) of callee method with data-flow fact returnedVal.
        Parameters:
        callee - The method the data-flow analysis returns from. The caller method is not available, as it will be internally added by the framework.
        returnStmt - The statement from which the method returns from (will be the first statement of the callee method)
        returnedVal - The data-flow fact that is returned.
        Returns:
        A set of data-flow facts (Val) which will be propagated at any call site of the callee method.
      • callFlow

        Collection<Val> callFlow​(Statement callSite,
                                 Val fact,
                                 Method callee,
                                 Statement calleeSp)
        Called by the backward analysis, when the backward solver reaches the callSite. Will be invoked once per available callee (in the call graph).
        Parameters:
        callSite - A call site reached by the backward analysis.
        fact - The data-flow fact reaching the callSite
        callee - The callee that may be invoked at the callSite
        calleeSp - The start point of callee (in the backward analysis, this typically will be return or throw statements)
        Returns:
        A set of data-flow facts (Val) that will be propagated at the calleeSp
      • normalFlow

        Collection<wpds.interfaces.State> normalFlow​(ControlFlowGraph.Edge edge,
                                                     Val fact)
        Called by the backward analysis, for any non return statements or call site statements. Note: The logic differs from general IFDS logic here. edge.getTarget() can also contain a call site, but fact is not used in the call site (no parameter or base variable of the call expression) .
        Parameters:
        edge - The control-flow graph edge that will be propagated next.
        fact - The incoming data-flow fact that reaches the edge.
        Returns:
        A set of data-flow states (states in the pushdown system, typically of type Node).
      • callToReturnFlow

        Collection<wpds.interfaces.State> callToReturnFlow​(ControlFlowGraph.Edge edge,
                                                           Val fact)
        Called by the backward analysis, when data-flow by-passes a call site with data-flow fact. Here logic can be added to handle native calls, or methods that are excluded from propagation. Note: The logic differs from general IFDS logic here. callToReturn is _only_ invoked when fact is also used in the call site (edge.getTarget()), i.e. fact is a parameter or the base variable of the call expression. As a consequence, special handling for call site may need to be implemented as part of callToReturn and normalFlow.
        Parameters:
        edge - Edge that bypasses the call site. edge.getTarget() is the call site, edge.getStart() is any predecessor
        fact - The fact that by-passes the call site.
        Returns:
        A set of data-flow states (states in the pushdown system, typically of type Node)