GraalVM Natvie Image でグラフをダンプする
GraalVM の native-image によるバイナリ生成時にグラフをダンプする方法を調べたのでまとめておく。参考にしたサイトは以下。 Command-line Options - Graph Dumping Native Image 機能使用時にグラフをダンプするためのオプションについて (公式ドキュメント) Ideal Graph Visualizer ダンプしたグラフを表示したり解析したりするための GUI ツール Ideal Graph Visualizer (IGV) についての公式ドキュメント Understanding Basic Graal Graphs – Logico Inside Shopify の中の人の記事の日本語訳 グラフの見方について詳しく説明されている 使用するサンプルコードはこちら。グラフの内容には触れないのでなんでもよいのだけれど、oracle/graal#9320 の issue について調べている過程でグラフを見てみたくなってダンプ方法を調べたので、こちらの issue の再現コードを使用する。 ...
GraalVM をビルドする - Windows 編
以前の記事 GraalVM をビルドする では Linux 環境における GraalVM のビルド方法を紹介した。今回は Windows 環境におけるビルド方法についてまとめておく。大筋は Linux と変わらないのだけど、いろいろハマりポイントがあったのでその辺を中心に記載する。なお、ビルド対象は substratevm。 ...
GraalVM Native Image のソースコードを雑に読んだ (3)
前回の続き。今回は残りのステージ ([5/8] Inlining methods, [6/8] Compiling methods, [7/8] Laying out methods, [8/8] Creating image) を取り上げる。 環境 OS: Linux (WSL 2 + Ubuntu 24.04.1) GraalVM: 24.2.0-dev (320d02ebb867) JDK: 21.0.2 (jvmci-23.1-b33) 5. Inlining methods In this stage, trivial method inlining is performed. The progress indicator visualizes the number of inlining iterations. 該当する処理は以下の箇所。前回の [4/8] Parsing methods 同様 finish メソッドの中。 ...
GraalVM Native Image のソースコードを雑に読んだ (2)
前回の続き。今回は [3/8] Building universe, [4/8] Parsing methods というステージを取り上げる。 環境 OS: Linux (WSL 2 + Ubuntu 24.04.1) GraalVM: 24.2.0-dev (320d02ebb867) JDK: 21.0.2 (jvmci-23.1-b33) 3. Building universe In this stage, a universe with all types, fields, and methods is built, which is then used to create the native binary. 処理は doRun メソッドの以下の try ブロックの中。 ...
GraalVM Native Image のソースコードを雑に読んだ (1)
この記事は Java Advent Calendar 2024 の 6 日目の記事です。 ここ最近 GraalVM の Native Image 関連のソースコードを雑に (本当に雑に) 読んでいたので、その内容をまとめておく。個々の内容 (たとえばコンパイル関連の処理など) についてはたいして深掘りしていないので、そのあたりを期待している方々には物足りない内容であろうことをあらかじめ伝えておきます。全体の流れを掴むために上辺だけをざっと眺めてみた、という感じ。 ...