Electrical FireDesignPrimitive Graph Format |
|
Several of the translator's phases use the primitive graph format to represent the Java function being translated. This format is a static single assignment (SSA) control and data flow graph comprised of nodes and edges described below. The nodes represent various primitive operations, while the edges represent data and control connections between these primitive operations.
See [CFRWZ89] and [CFRWZ91] for more information about SSA graphs. Initially we intend to build the SSA graph directly out of the processed bytecodes; later we may use a DJ graph approach [SreeGao95][Sreedhar95] to do it faster if needed.
The format of primitive graphs is fairly complex, and we can think of it as comprised of several layers. In the next few pages we'll take a look at the individual layers (control and data) in detail, followed by a detailed example.
The editable sources for the figures (in ClarisDraw format) are in the Primitive Graphs and Basic Blocks files; the Background file is used as an intermediary to get around ClarisDraw's off-by-one error when copying selections to avoid getting a white border around the figures.