- 著者
-
藤澤 徹
- 雑誌
- 情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
- 巻号頁・発行日
- vol.11, no.2, pp.31, 2018-06-26
動的型付き言語の高速化においては,型ごとに最適化したコードをいかに高速かつ効率的に生成するかが鍵となる.プロダクションコードの巨大化かつ抽象化にともないポリモーフィックな関数の最適化手法の重要度が増してきている.あるポリモーフィックな関数が,各コールサイトごとに見ればモノモーフィックとみなせる場合,コールサイトごとの型に特化した関数インライン展開を行うことで効率の良いコードが生成できることが広く知られている.しかし,従来から広く使用されている関数ごとの型フィードバックでは,関数をインライン展開する前の状態において複数のコールサイト由来の型情報を区別することができず,不要に汎用的なコードを生成してしまい,これを最適化するにはもう一段のJITコンパイル層が必要となる.本発表では,この問題を改善する既存実装に適用可能な最適化手法として,オブジェクト構造を意識したシグネチャごとの型フィードバックを提案する.これにより,複数のコールサイト由来の型情報を区別可能となり最初のインライン展開においてコールサイトに特化した型情報を用いることができ,さらなる最適化を可能とする.本手法をMozilla FirefoxのJavaScript処理系SpiderMonkeyに実装し,ポリモーフィックな関数のコールサイトごとの最適化への適用可能性を提示するとともに,各状況への最適化の可能性や性能向上,および手法の軽量さについて評価する.