Module dev.civl.abc

Interface InvocationGraphNode


public interface InvocationGraphNode

The invocation graph node is described in detail in paper "Context-sensitive inter-procedural points-to analysis in the presence of function pointers"

Briefly, a invocation graph node represents a lexical call to a function. A program can be represented as a invocation graph where the root node is the call to main function.

  • Method Details

    • children

      Returns:
      the InvocationGraphNodes that represents the function calls that are lexically in the body of this function
    • parent

      Returns:
      the parent node whose associated function all contains the lexical call associated with this node
    • function

      Function function()
      Returns:
      the function this node refers to. Note that if the lexical call associated with this node is not called through function pointer, there is one exact Function this node refers to.
    • accessedGlobals

      Iterable<AssignExprIF> accessedGlobals()
      Returns:
      the set of accessed global objects by the calling function
    • actualParams

      AssignExprIF[] actualParams()
      Returns:
      an ordered array of actual parameters
    • formalParams

      AssignExprIF[] formalParams()
      Returns:
      an ordered array of formal parameters
    • returnTo

      AssignExprIF returnTo()
      Returns:
      the abstract object representing the expression that receives the returning value from this call
    • returnings

      Iterable<AssignExprIF> returnings()
      Returns:
      the set of abstract objects that may be returned by this call
    • kind

      Returns:
      the kind of the node
    • getRecursive

      InvocationGraphNode getRecursive()
      Returns:
      the RECURSIVE kind node that this APPROXIMATE node is associated with. null if this node is NOT APPROXIMATE kind.
    • share

      void share(InvocationGraphNode node)
      Share formal parameters, global accesses and returning values with the given node, which must represents a call to the same function as this instance.
      Parameters:
      node -
    • markRecursive

      void markRecursive()
    • setFormalParameters

      void setFormalParameters(AssignExprIF[] formals)
      Parameters:
      formals - the abstractions of the formal parameters of this node
    • addReturnValue

      void addReturnValue(AssignExprIF returnValue)
      save a returning expression in the associated function body in this node
      Parameters:
      returnValue - an return expression abstraction
    • addGlobalAccess

      void addGlobalAccess(AssignExprIF globalAccess)
      save an access to a global object by the function body of the function of this call
      Parameters:
      globalVar - a global object abstraction
    • addChild

      void addChild(InvocationGraphNode child)
      Add a child to this node
      Parameters:
      child -