IMPORTANT Limitations
synchronized
not yet implemented. invokedynamic
not yet implemented. Used for lambda functions from Java 8 onwards.A Java compiler converts a Java file into Bytecode which is stored in a class file. A class file represents the original program in a compact binary form and could be interpreted by a JVM. Our deep compiler translates this Bytecode directly into target machine code. To optimize for speed and code size and to make use of register based architecture - such as the Power-PC or ARM microarchitecture - we transform the Bytecode in a first step into Static Single Assignment Form (SSA). This form is simple and platform independent and can be used for various optimizations. In a second step registers are allocated and code is generated