Date: Tue, 11 Jan 2000 18:16:36 JST From: SHUDO Kazuyuki Subject: [JavaHouse-Brewers:29861] Re: java.lang.Compiler =?ISO-2022-JP?B?GyRAGyRCJEskRCQkJEYbKEI=?= To: java-house-brewers at java-house.etl.go.jp (JavaHouse Brewers ML) Message-Id: <200001110916.SAA14623@cafe.muraoka.info.waseda.ac.jp> Yoshiki Sato さん wrote: > ということはjava.lang.Compiler内のメソッドは > 実際にJITの動作に関係あるのではなく > ユーザがプログラム中で意図的にJITを起動させたい時に使用するのでしょうか? そうです。 ただ、compileClass(), compileClasses() を呼ぶと 本当に JIT コンパイルを行ってもらえるかどうかは、JIT コンパイラ次第です。 java.lang.Compiler クラスは、JIT コンパイラがユーザプログラムから 何か指示を受け取るためのものです。 Compiler クラスにはつぎの public (かつ static) メソッドがあります。 native boolean compileClass(Class clazz); native boolean compileClasses(String string); native Object command(Object any); native void enable(); native void disable(); メソッド名そのものが何のためのメソッドかを表しているように見えますが、 実はこれらが呼ばれたときに実際に何を行うかは、JIT コンパイラの自由です。 無視してもいいですし、極端な話、compileClass(Class) が呼ばれたら クラス名を表示する、なんてコンパイルとは全然関係ないことをしてもいいんです。 実際、ある JIT は enable(), disable() を無視していました。 > あともう一つ質問なんですが、 > 例えばあるAというメソッド中でBというメソッドが呼ばれた時は > どのような動作をするのでしょうか? > > 当然Bの実行が終わらなくてはAは実行できません。 (略) そんなことはないです。 SHUDO Kazuyuki/首藤一幸 私をたばねないで あらせいとうの花のように shudoh at muraoka.info.waseda.ac.jp