通过 Graal VM 提供的 Ideal Graph Visualizer 学习IR

这是GraalVM 提供的 IGV 工具,可以对比一下 Openjdk 提供的 IGV,我之前的博客也有,可读性天差地别
通过 Graal VM 提供的 Ideal Graph Visualizer 学习IR_第1张图片

配置 IGV

首先是下载 Graal VM 提供的 IGV , 请点击这里

通过 Graal VM 提供的 Ideal Graph Visualizer 学习IR_第2张图片
修改配置文件 idealgraphvisualizer\etc\idealgraphvisualizer.conf,配置一下JDK,必须要有 graal 编译器的 JDK
通过 Graal VM 提供的 Ideal Graph Visualizer 学习IR_第3张图片
然后你就可以打开idealgraphvisualizer/bin/idealgraphvisualizer.exe

igv 请不要放在包含中文的文件路径下,不然打不开。

通过 Graal VM 提供的 Ideal Graph Visualizer 学习IR_第4张图片

编译 Java

下面是测试代码

public class CompilationTest {
  public static int hash(Object input) {
    if (input instanceof Exception) {
      return System.identityHashCode(input);
    } else {
      return input.hashCode();
    }
  }
  public static void main(String[] args) throws InterruptedException {
    for (int i = 0; i < 500000; i++) {
      hash(i);
    }
    Thread.sleep(2000);
  }
}
javac CompilationTest.java

java -XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler -XX:CompileCommand=dontinline,'CompilationTest.hash' -Dgraal.Dump=:3 -Dgraal.MethodFilter='CompilationTest.hash' -Dgraal.OptDeoptimizationGrouping=false CompilationTest

graal_dumps 生成了相关 IR 文件

通过 Graal VM 提供的 Ideal Graph Visualizer 学习IR_第5张图片
导入 .bgv 到 IGV 中即可

通过 Graal VM 提供的 Ideal Graph Visualizer 学习IR_第6张图片

参考

Optimizing Truffle Interpreters

Oracle GraalVM Enterprise Edition 19 - Ideal Graph Visualizer

你可能感兴趣的:(JVM)