こちらの内容に沿って、Graalの理解を深めています。 Understanding How Graal Works - a Java JIT Compiler Written in Java 前回はGraalにJITコンパイルをさせました。 jyukutyo.hatenablog.com 今回はGraalのグラフについてです。いわゆるプログラム依存グラフ(program-dependence-graph)です。無駄な処理を発見するために、コードをデータ構造(今回はグラフ)で表現するようにしているのです。これはGraalに限ったことではなく、C2コンパイラもこういった表現をしています(sea-of-nodes)。 x + yを例にします。x,yはローカル変数、+は演算子です。 矢印がデータフローです。2つのローカル変数が、+演算子に流れていきます。 また、データフローとは別に実行順序もありま