今朝非常に早い時間に、JVMは初めて、invokedynamic命令の完全なブートストラップサイクルを処理した。固定プール入力を関連付け、精錬さ れたコールサイトオブジェクトを作成し、クラスごとのブートストラップメソッドを呼び出し、精錬されたコールサイトをメソッドハンドルに関連付け、そして 関連付けられたコールサイトをメソッドハンドルを通じて999回以上フルスピードで呼び出す。呼び出し元と呼び出し先でのメソッド名は異なるが、署名は同 一であった。リンケージはブートストラップメソッド内部の無作為な手書きのJavaコードで実行された。
「invokedynamic」命令は「Da Vinci Machine」(リンク)と呼ばれる複数言語仮想マシンの一部として計画されている多くの取り組みのうつの1つである。Da Vinciにおいて予定されているすべての機能拡張は、MLVMサイトのサブプロジェクトセクション(リンク)で説明されている。動的起動はまた、JSR-292(リンク)の 一部であり、以前InfoQで議論され(参考記事)、Da Vinciにおける実験的な作業のいくつかをコアJava VMに適合させることである。John Rose氏によるこの発表は、初めて「invokedynamic」がホットスポット仮想マシンで実行したことを告げるものである。
動的起動は、JVMの動的言語デベロッパによって最も長期間待ち望まれていた機能の1つである。以前Gilad Bracha氏は動的起動の背景にある理論についてInfoQに語り(参考記事・英語)、また必要な機能拡張ととらえられている理由を述べた。JRuby(リンク)のリードデベロッパであるCharles Oliver Nutter氏(リンク)は、John Rose氏の発表について以下のように話した。
最高だ..数日のうちにリリースされるJRuby 1.1.4があれば、 invokdynamic休暇を取っているだろう。秋のコンファレンスシーズンに間に合うようにそれをデモするのがよい。Groovy(リンク)のプロジェクトマネージャであるGuillaume Laforge氏(リンク)は、非常にシンプルな言葉で祝っている。
シャンパン!:-)しかしながら、動的起動にはまだ長い道のりがある。当然のことながら、動的言語(JRubyやGroovyなど)は、新しい命令を使用するように適合させなければならない。またRose氏は、コア実装においてまだ作業が残っていることを述べている。
JVMコードに関して、x86/32上でしか動作しない。次のステップは、アセンブラーコードを正しいファイルに移行し、x86/64およびSPARCに対するサポートを終了することである。
原文はこちらです:http://www.infoq.com/news/2008/09/invokedynamic_day