SafeTSA ( Safe Typed Single Assignment ) は、Javaプログラミング言語と標準の Java 仮想マシン (JVM)バイトコードのすべての型安全性を表現できる静的単一代入形式(SSA) 中間表現です。
2005 年現在、多くの最適化コンパイラ (JVM で使用されるジャストインタイム コンパイラを含む) は、内部で SSA 表現を使用しています。一般的な JVM 用ジャストインタイム コンパイラは、JVM スタック マシン バイト コードを内部の静的単一割り当て表現に変換し、最適化を実行し、SSA 形式をホスト CPU のマシン コードに類似した低レベル形式に変換し、プラットフォーム固有の最適化を実行してから、最終的に実行されるネイティブ コードを作成します。SafeTSA は、これらの SSA 内部表現に類似した外部表現ですが、SafeTSA は標準 JVM バイト コードの完全な型安全性 (クラス ロード時のセキュリティ検証可能性を含む) も提供します。理論上、これにより、JVM の利点が維持され、プログラムを効率的に実行するために JVM が行う必要のある作業量が削減されます。
SafeTSA の開発者は、IBM JikesRVM (当時は Jalapeño JVM と呼ばれていました) を改造し、標準 JVM バイトコードと SafeTSA バイトコードの両方を使用できるようにしました。その後、標準的な Java ベンチマーク スイートを実行し、SafeTSA 入力によってジャストインタイム コンパイラからより高速に実行されるネイティブ コード出力が生成されることを示す論文を発表しました。さらに、研究者は、SafeTSA がネイティブ コードにコンパイルするのにかかる時間が短いことも示しました。
一方、スタック マシン バイトコード (標準 JVM バイトコードなど) の利点には、簡単に実装できるインタープリタが含まれます。
2005 年後半のほとんどの商用 JVM は、バイトコード解釈とバイトコード ジャストインタイム最適化コンパイルを組み合わせて使用していますが、SafeTSA 研究で使用された JikesRVM は、ジャストインタイム コンパイルに 2 つの異なる最適化レベルの組み合わせのみを使用しています。研究プラットフォームは、SafeTSA バイトコードを実行するために解釈を使用しなかったため、商用 JVM の修正バージョンで SafeTSA バイトコードがどのように動作するかは明確ではありません。
2005 年末現在[アップデート]、SafeTSA は学術界でのみ使用されているようです。
外部リンク
- ターゲットサイトでの動的最適化をサポートすることを目的とした型安全なモバイルコード表現 (2000) W. Amme、N. Dalton、M. Franz、J. von Ronne
- SafeTSA: 静的単一代入形式に基づく型安全かつ参照的に安全なモバイルコード表現 (2001) W. Amme、N. Dalton、J. von Ronne、M. Franz
- SafeTSA 表現を使用して既存の Java 仮想マシンのパフォーマンスを向上させる (2002) W. Amme、J. von Ronne、M. Franz
