セッションスケジュール
参加セッション
Panamaを先取り!? JVMCIでJITと遊ぶ
ご本尊
What’s JVMCI?
JEP 243: Java-Level JVM Compiler Interface
Summary
Develop a Java based JVM compiler interface (JVMCI) enabling a compiler written in Java to be used by the JVM as a dynamic compiler
要約:Javaで書いたコンパイラをJVMで動かせるようにする。
→ Javaで(機械語)コンパイラを書く。
すごいじゃあくをかんじる
邪悪ポイント
- Write once, run anywhere
- CPU毎に命令セットとにらめっこしてbyte[]書いてください
- Java API
- 機械語レベルにそんなものはない(呼べなくはない)
- JITによる最適化
- お前がそれを書くのだ
見方を変えよう
- Write once, run anywhere
- JDKのセットなのでアプリではなくプラットフォーム側
- Java API
- 機械語側じゃなくてそのコンパイラで使う
- JITによる最適化
- お前がそれを書くのだ
面白ポイント
- JITの状態を取得できるAPIがついてる
- JITの状態を制御できるAPIもついてる
- JITのプロファイル情報を取得できるAPIまでついてる
- JNIとか使わなくてもシステムコールとかできる
- JVM系言語を作成する際にJITと連携した別の最適化構造を導入できる
- JVMの仕様に沿ったデータをアセンブラで取り扱うとかいう偉業ができる
感想文
- JDK必須だし通常のアプリケーションレイヤで活用されることはほぼないはず
- 調査、検証の用途では十分に使いどころはある
- JVM言語系では使いどころが多そう