Mercurial > hg > truffle
annotate doc/design/graal_compiler_org.tex @ 2523:268b8eb84b6e
Removed compiler extension mechanism
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Wed, 27 Apr 2011 16:48:23 +0200 |
parents | 8c6e31c62fba |
children |
rev | line source |
---|---|
2517
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
1 \abstract{The basic motivation of graal is to show the advantage, both in terms of development effort and runtime speed, a compiler written in Java can deliver to a C++-based virtual machine. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
2 This document contains information about the proposed structure and design of the Graal Compiler, which is part of the Maxine project.} |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
3 |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
4 \section{Project Source Structure} |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
5 In order to have clear interfaces between the different parts of the compiler, the code will be divided into the following source code projects: |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
6 \begin{description} |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
7 \item[Graph] contains the abstract node implementation, the graph implementation and all the associated tools and auxiliary classes. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
8 \item[Nodes] contains the node implementations, ranging from high-level to machine-level nodes. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
9 \item[GraphBuilder] contains helpers for building graphs from java bytecodes and other source representations. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
10 \item[Assembler] contains the assembler classes that are used to generate the compiled code of methods and stubs. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
11 \item[Optimizations] contains all the optimizations, along with different optimization plans. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
12 \item[GraalCompiler] contains the compiler, including: |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
13 \begin{itemize} |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
14 \item Handling of compilation phases. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
15 \item Compilation-related data structures. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
16 \item Implementation of the \emph{compiler interface} (CI). |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
17 \item Register allocation. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
18 \item Machine code creation, including debug info. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
19 \item Debug output and compilation observation. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
20 \item Compiler options management. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
21 \end{itemize} |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
22 \end{description} |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
23 |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
24 \section{Initial Steps} |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
25 \begin{itemize} |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
26 \item Restructuring of the project to include the compiler and the modified HotSpot code within one repository. The CRI project will remain in the Maxine repository, because it will remain mostly unchanged. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
27 \item Stripping optimizations from the existing compiler, they will be reimplemented later on using the new infrastructure. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
28 \item Creating Node and Graph classes, along with the necessary auxiliary classes. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
29 \item Writing documentation on the design of the compiler. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
30 \item Use the Node class as the superclass of the existing Value class. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
31 \item Identify (and later: remove) extended bytecodes. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
32 \item Implement the new frame state concept. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
33 \item Remove LIR - in the long run there should only be one IR, which will be continually lowered until only nodes that can be translated into machine code remain. |
8c6e31c62fba
added initial version of design docs, fixed .hgignore (regex, . -> \.)
Lukas Stadler <lukas.stadler@jku.at>
parents:
diff
changeset
|
34 \end{itemize} |