XCSG:Call

From AtlasWiki
Jump to: navigation, search

Call edges in XCSG indicate the presence of one or more calls within the scope of one Function to another Function.

For calls which are statically resolved (such as calls to GlobalFunctions or ClassMethods), a single call edge exists to the Function called.

For object-oriented dynamic calls, Call edges are created to the specified Method (if it is concrete) and to every concrete method that Overrides it.

This may result in call edges that cannot occur in the running program, but is conservative in ensuring no possible calls to types that have been indexed were missed. Alternative strategies for call resolution are possible, such as type inferencing; to support extension with alternative strategies, Invoke nodes are provided to enable discovery of the declared type and method signature of a dynamic call, which gives sufficient information to recalculate what calls should exist with other constraints in mind.

Individual CallSites are also represented in XCSG, but are not at the present time associated with Call edges.

Specification

Metaclass Call
Extends Edge
Description Indicates the possibility of one or more calls to the Function pointed to within the Function that the edge comes from.
Specified Connections
Predecessor Multiplicity Successor
Function ✱ ➞ ✱ Function