shuJIT 利用法

last-modified: Jul 12 14:05 2001 JST

インストールおよび利用方法を説明します。

インストール : JDK 1.2 以降の場合

JITコンパイラ libshujit.so
JDK のインストール先/jre/lib/i386/
に置きます。

インストール : JDK 1.1.X の場合

JITコンパイラ libshujit.so を、次のどちらかのパスに置きます。

利用法

JIT コンパイラを利用するには、いくつかの方法があります。

・JVM (Java 仮想マシン) 起動コマンド (java, jre) のオプション

java、または jre コマンドにオプションとして
-Djava.compiler=shujit
を与えると、JIT コンパイラ (libshujit.so) を利用できます。

具体的には、次のように JVM を起動します。

% java -Djava.compiler=shujit クラス名

・環境変数

環境変数 JAVA_COMPILERshujit と設定することで、 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>