An efficient static single assignment interpreter with translation
Although optimizing compilers often utilize Static Single Assignment Form (SSA) in their intermediate representations, most high-performance interpreters implement stack-oriented languages. While previous work had shown that interpreting SSA Form is feasible, the implementation reported previously did not support recursive function calls and was slower than commercial interpreters for the stack-oriented Java bytecode language. It remained an open question as to whether an SSA interpreter supporting recursive function calls could be made as efficient as a high-performance stack-oriented interpreter. This paper describes a high-performance interpreter for a variant of Static Single Assignment Form, known as Interpretable Static Single Assignment Form (ISSA).
Through the use of well-engineered data structures and other optimizations, this interpreter is able to achieve performance comparable to that of well-engineered stack oriented Java Virtual Machine interpreters.
This paper describes how to engineer an SSA interpreter to support for recursive function calls and indicates how standard SSA may be translated into ISSA for use in the interpreter, including the addition of ISSA-specific instructions and constructs. Finally, it reports on the performance of several implementation variants of computationally intensive benchmarks.