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.
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic enumDetails these kinds can be found in paper "Context-sensitive inter-procedural points-to analysis in the presence of function pointers". -
Method Summary
Modifier and TypeMethodDescriptionvoidaddChild(InvocationGraphNode child) Add a child to this nodevoidaddGlobalAccess(AssignExprIF globalAccess) save an access to a global object by the function body of the function of this callvoidaddReturnValue(AssignExprIF returnValue) save a returning expression in the associated function body in this nodechildren()function()kind()voidMark this node to beInvocationGraphNode.IGNodeKind.RECURSIVEparent()returnTo()voidsetFormalParameters(AssignExprIF[] formals) voidshare(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.
-
Method Details
-
children
Iterable<InvocationGraphNode> children()- Returns:
- the InvocationGraphNodes that represents the function calls that are lexically in the body of this function
-
parent
InvocationGraphNode 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
Functionthis 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.
-
markRecursive
void markRecursive()Mark this node to beInvocationGraphNode.IGNodeKind.RECURSIVE -
setFormalParameters
- Parameters:
formals- the abstractions of the formal parameters of this node
-
addReturnValue
save a returning expression in the associated function body in this node- Parameters:
returnValue- an return expression abstraction
-
addGlobalAccess
save an access to a global object by the function body of the function of this call- Parameters:
globalVar- a global object abstraction
-
addChild
Add a child to this node- Parameters:
child-
-