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[update], it seems that SafeTSA has only been used in academia.
- A Type-Safe Mobile-Code Representation Aimed at Supporting Dynamic Optimization At The Target Site (2000) W. Amme, N. Dalton, M. Franz, J. von Ronne
- SafeTSA: A Type Safe and Referentially Secure Mobile-Code Representation Based on Static Single Assignment Form (2001) W. Amme, N. Dalton, J. von Ronne, M. Franz
- Using the SafeTSA Representation to Boost the Performance of an Existing Java Virtual Machine (2002) W. Amme, J. von Ronne, M. Franz