Difference between revisions of "XCSG:Call"

From AtlasWiki
Jump to: navigation, search
(restricting presence of call edges to Functions only, excluding ControlFlow nodes)
(Specification: Add origin and destination of call edges)
 
Line 13: Line 13:
 
| extends = Edge
 
| extends = Edge
 
| description = Indicates the possibility of one or more calls to the [[Function]] pointed to within the [[Function]] that the edge comes from.
 
| description = Indicates the possibility of one or more calls to the [[Function]] pointed to within the [[Function]] that the edge comes from.
 +
| specified = Function,Function,*,*
 
}}
 
}}

Latest revision as of 17:41, 2 June 2015

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