Date: Fri, 10 Sep 99 18:54:09 JST From: SHUDO Kazuyuki Subject: [JavaHouse-Brewers:27865] shuJIT 0.3.10 To: java-house-brewers at java-house.etl.go.jp (JavaHouse Brewers ML) Message-Id: <199909100951.SAA04607@cafe.muraoka.info.waseda.ac.jp> 首藤です。 Sun 社の JVM (JDK,JRE) / FreeBSD,Linux / x86 用の JIT コンパイラ、 shuJIT の 0.3.10 をリリースしました。 http://www.shudo.net/jit/index-j.html (日本語) http://www.shudo.net/jit/ (英語) ここで最後に (8月 1日) アナウンスした 0.3.2 からの 主な変更点は次の通りです。 [1] strictfp に対応した。 [2] オプション cmplthreshold を用意した。 [3] きちんと IllegalAccessError, IncompatibleClassChangeError が 発生するようにした。 [4] java.lang.Math のメソッド群のうちいくつかを inlining するようにした。 [5] gcc 2.9X でコンパイルできるようにした。 他には、いくつかの bug fix で次のアプリケーションが動作するようになりました。 NetBeans 2.1.1, 3.0beta, Java Media Framework 2.0beta [1] strictfp は最近 Java 言語に導入された class, interface, method, モディファイアです。 strictfp の意味はここでは割愛します。 興味ある方は、NetNews の fj.comp.lang.arch, fj.comp.lang.java 99年 7/11 からのスレッド Subject: What IEEE [78]54 prescribes をご覧下さい。 [2] 例えば、環境変数 JAVA_COMPILER_OPT を cmplthreshold=5 と設定すると、 メソッドは 5回呼び出された時点ではじめて JIT コンパイルされます。 極めて原始的ですが、adaptive compilation の一種です。 [3] IllegalAccessError は final フィールドに値を代入しようとすると発生します。 IncompatibleClassChangeError は implements していると期待した interface が実は implements されていなかったときに発生します。 どちらも通常は Java コンパイラ (javac) がエラーとして検出してくれるので、 発生させる方が実は大変です。 TYA (ftp://gonzalez.cyberus.ca/pub/Linux/java/) は どちらも発生させることができません。final フィールドへの代入を許し、 IncompatibleClassChangeError の代わりに NullPointerException を発生させます。 [4] java.lang.Math クラスのメソッド、 sin, cos, tan, atan2, atan, exp, log, floor, ceil の呼び出しについて、 機械語を直接 inlining するようにしました。 [5] gcc 2.9X 対応と言っても、configure.in が gcc 2.9X を認識 するようにしたのと、JIT が生成したコードによる自己書き換 えのためのコードをコンパイラの性質にあまり依存しないもの に書き換えただけです。 SHUDO Kazuyuki/首藤一幸 私をたばねないで あらせいとうの花のように shudoh at muraoka.info.waseda.ac.jp