From Wikipedia, the free encyclopedia
Jump to: navigation, search

SafeTSA is a static single assignment form (SSA) intermediate representation capable of representing all of the type safety of the Java programming language and the standard Java Virtual Machine (JVM) byte-code.

As of 2005, many optimizing compilers (including just-in-time compilers used by JVMs) use SSA representations internally. A typical just-in-time compiler for a JVM converts JVM stack-machine byte-code into an internal static-single-assignment representation, performs optimizations, converts the SSA form to a low-level form similar to the host CPU's machine code, and performs some platform-specific optimizations before finally creating the native code that gets executed. SafeTSA is an external representation similar to these SSA internal representations, yet SafeTSA still provides the full type safety (including security verifiability at class load time) of standard JVM byte-code. In theory, this preserves the advantages of the JVM while decreasing the amount of work the JVM needs to do in order to efficiently execute programs.

The creators of SafeTSA modified the IBM JikesRVM (called the Jalapeño JVM at the time) so that it could use standard JVM byte-code and also a SafeTSA bytecode. They then ran a standard suite of Java benchmarks and published a paper showing that SafeTSA input produced faster running native code output from the just-in-time compiler. In addition, the researchers also showed that SafeTSA required less time to compile to native code.

On the other hand, the advantages of a stack-machine byte-code (such as the standard JVM byte-code) include an easily implemented interpreter.

It should also be noted that most commercial JVMs in late 2005 use a mixture of byte-code interpretation and byte-code just-in-time optimized compilation whereas the JikesRVM used in the SafeTSA research uses only a mixture of two different optimization levels for just-in-time compilation. The research platform never used interpretation to run SafeTSA byte-code, so it's less clear how SafeTSA byte-code would perform in a modified version of a commercial JVM.

As of late 2005, it seems that SafeTSA has only been used in academia.

External links[edit]