The dataflow information is one of the fundamental structures we have in the dataflow analysis. It is continuously updated during the dataflow analysis and holds its current state for the respective subtree processed. Each processor during the dataflow analysis may use the information from its children to produce a new state of the dataflow information.

You may initialize a new dataflow information with initializeCleanDataflowInformation.

DataflowCfgInformation - the control flow aspects

interface DataflowInformation {
    entryPoint: NodeId;
    environment: REnvironmentInformation;
    exitPoints: readonly ExitPoint[];
    graph: DataflowGraph<DataflowGraphVertexInfo, DataflowGraphEdge>;
    in: readonly IdentifierReference[];
    out: readonly IdentifierReference[];
    unknownReferences: readonly IdentifierReference[];
}

Hierarchy (view full)

Hierarchy-Diagram

UML class diagram of DataflowInformation

Properties

entryPoint: NodeId

The entry node into the subgraph

Current environments used for name resolution, probably updated on the next expression-list processing

exitPoints: readonly ExitPoint[]

All already identified exit points (active 'return'/'break'/'next'-likes) of the respective structure.

The current constructed dataflow graph

in: readonly IdentifierReference[]

References which are read within the current subtree.

IdentifierReference - a reference on a variable, parameter, function call, ...

out: readonly IdentifierReference[]

References which are written to within the current subtree

IdentifierReference - a reference on a variable, parameter, function call, ...

unknownReferences: readonly IdentifierReference[]

References that have not been identified as read or write and will be so on higher processors.

For example, when we analyze the x vertex in x <- 3, we will first create an unknown reference for x as we have not yet seen the assignment!

IdentifierReference - a reference on a variable, parameter, function call, ...