shuJIT 利用法
last-modified: Jul 12 14:05 2001 JST
インストールおよび利用方法を説明します。
JITコンパイラ libshujit.so を
JDK のインストール先/jre/lib/i386/
に置きます。
JITコンパイラ libshujit.so を、次のどちらかのパスに置きます。
- 環境変数 LD_LIBRARY_PATH に含まれているパス
- JDK のインストール先/lib/プロセッサ名/スレッドライブラリ名/
例) /usr/local/jdk1.1.8/i686/green_threads/
JIT コンパイラを利用するには、いくつかの方法があります。
java、または jre コマンドにオプションとして
-Djava.compiler=shujit
を与えると、JIT コンパイラ (libshujit.so) を利用できます。
具体的には、次のように JVM を起動します。
% java -Djava.compiler=shujit クラス名
環境変数 JAVA_COMPILER を shujit と設定することで、
JVM を起動する度にオプションを指定する手間を省けます。
C shell 系統のシェル (csh, tcsh) をお使いの場合は
% setenv JAVA_COMPILER shujit
bourne shell 系統のシェル (sh, ksh, zsh) をお使いの場合は
% export JAVA_COMPILER=shujit
とします。
お使いのシェルの run command ファイル (.profile, .cshrc, ...) に書いておくとよいでしょう。
JIT コンパイラが動作していれば、JVM 起動時に次のメッセージが表示されます。
shuJIT for Sun Classic VM/x86 by Kazuyuki Shudo
環境変数 JAVA_COMPILER_OPT を設定することで、
JIT コンパイラにオプションを与えることができます。
複数のオプションを与えたい場合、各オプションは `,' で区切ります。
用意されているオプションは次の通りです。
- quiet
- 起動時のメッセージ (shuJIT for ...) を出力しません。
- igndisable
- JIT コンパイラの動作を停止、再開させるメソッド
- java.lang.Compiler#disalbe(), enable() を無視します。
- outcode
- 各メソッドのコンパイル結果をファイルに出力します。
- 出力先ファイル名は "code-クラス名#メソッド名.S" です。
- アセンブル (gcc -c ほげ.S) してディスアセンブル (objdump -d ほげ.o) して眺めます。
- codesize
- コンパイルされた各メソッドについて、
- バイトコードの命令数、バイト数、生成されたコードのバイト数
- をファイル jit_codesize に出力します。
- 集計スクリプトを使って、rate_codesize.rb jit_codesize として集計できます。
- cmplatload
- クラスがロードされた時点で、そのクラスのすべてのメソッドをコンパイルします。
- cmplclinit
- 通常はコンパイルしないクラスイニシャライザ (static {...}など) もコンパイルします。
- systhreshold=<整数値> (0.7.0 以降)
- JDK が提供するメソッドを、指定された回数だけ呼び出された時点で初めてコンパイルします。
既定値は 10 です。
-
- userthreshold=<整数値> (0.7.0 以降)
- 利用者が用意したメソッドを、指定された回数だけ呼び出された時点で初めてコンパイルします。
既定値は 1 です。
-
- inlinemaxlen=<整数値>
- この値より短いメソッドをインライン展開します。
この値は内部命令の数で、これはおよそバイトコード命令数 + 5,6 + α です。
指定しない場合、20 です。
- inlinedepth=<整数値>
- 再帰的にインライン展開する深さです。
指定しない場合、2 です。
- ignstrictfp
- strictfp修飾子を無視する。
- このオプションが指定されない場合、strictfpが考慮されます。
- frcstrictfp
- すべてのメソッドに対して strictfp のセマンティクスを強制します。
- sched_fifo
- JVM プロセスのスケジューリングポリシーを FIFO (SCHED_FIFO) に設定します。
- cf. % man sched_setscheduler
- sched_rr
- JVM プロセスのスケジューリングポリシーを round robin (SCHED_RR) に設定します。
- codedb
- コンパイラが生成したネイティブコードを、データベースファイル (shujit-code.{db,page}) に保存します。また、保存してあるコードを再利用します。
Back to
Copyright (C) 1998,1999,2000,2001 首藤 一幸
<shudo at computer.org>