Graalはこちらからダウンロードできるのですが、
ソースを読むついでにビルドしました。
Graalとmxが要ります。Graalはバージョン0.29を使います。
$ git clone https://github.com/graalvm/graal.git $ cd ../graal $ git checkout vm-enterprise-0.29 $ git clone https://github.com/graalvm/mx.git $ cd mx $ export PATH=`pwd`:$PATH $ mx -v Welcome to Mx version 5.130.1
MxはMavenみたいなものらしいです。込み入ったユースケースで使うので、アプリケーション開発では使わないらしいです。
Graalのコンパイラ(JIT)をビルドします。JDKは9にしました。
$ cd graal/compiler $ export JAVA_HOME=`/usr/libexec/java_home -v 9` $ mx build ... Archiving TRUFFLE_TEST... [dependency com.oracle.truffle.api.test updated]
mx vm
して確認します。
$ mx vm 使用方法: java [options] <mainclass> [args...] (クラスを実行する場合) または java [options] -jar <jarfile> [args...] (jarファイルを実行する場合) または java [options] -m <module>[/<mainclass>] [args...] java [options] --module <module>[/<mainclass>] [args...] (モジュールのメイン・クラスを実行する場合) ...
ソースをIDEで読めるようにするには、mx ideinit
です。実行するとEclipse、IntelliJ IDEA、NetBeansの設定を全部出力されます。.classpathやらproject.xmlやら.imlファイル全部出ました。
$ mx ideinit created /Users/jyukutyo/code/graal/truffle/mxbuild/mx.truffle/eclipse-project-settings ...
IntelliJでの問題
SDKの値が1.9
になっていて、モジュールすべてでエラーになります。9に変更します。
IGV
IGVでGraalのデータ構造を可視化できます。可視化自体は今度試します。
$ mx igv Downloading BATIK from ['https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/batik-all-1.7.jar'] Downloading https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/batik-all-1.7.jar to /Users/koichi.sakata/.mx/cache/BATIK_122b87ca88e41a415cf8b523fd3d03b4325134a3.jar 8361163 bytes (100%) Please select a JDK for running IGV: (version >= 1.8 and < 1.8.0u20 or >= 1.8.0u40) [1] Java 1.8.0_144 (1.8) from /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home [2] Java 1.7.0_80 (1.7) from /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home [3] <other>
こんな感じでJDKの選択します。なぜか[3]を選んでJDK 9のパスを入力してもダメでした。8にしました。
ユニットテスト実行
ユニットテストがあります。実行します。
$ mx unittest -Dgraal.Dump BC_athrow0 ... MxJUnitCore JUnit version 4.12 .Dumping debug output in /Users/jyukutyo/code/graal/compiler/dumps/1510811588804 . Time: 1.738 OK (2 tests)
これでソースを触る準備ができました。