(57)【要約】【課題】  仮想マシン環境におけるメソッド呼び出し方法、および前記方法を行う仮想マシンが搭載されたシステムを提供する。【解決手段】  第１メソッドの命令語を読み取る（ａ）ステップと、前記命令語が第２メソッドを呼び出す命令語に該当する場合、前記命令語コードのアドレスを所定の記憶空間に格納する（ｂ）ステップと、前記第２メソッド以前にコンパイルされたコードのアドレスを新しくコンパイルされたコードのアドレスに変更して、前記格納されたアドレスに記録する（ｃ）ステップと、前記第１メソッドを実行する場合、前記格納されたアドレスで前記第２メソッドの新しくコンパイルされたコードのアドレスで直接分岐して、前記第２メソッドを呼び出す（ｄ）ステップとを含む。【選択図】  図４
2007226788.tif 000002
【特許請求の範囲】
【請求項１】
第１メソッドの命令語を読み取る（ａ）ステップと、
前記命令語が第２メソッドを呼び出す命令語に該当する場合、前記命令語コードのアドレスを所定の記憶空間に格納する（ｂ）ステップと、
前記第２メソッド以前にコンパイルされたコードのアドレスを新しくコンパイルされたコードのアドレスに変更して、前記格納されたアドレスに記録する（ｃ）ステップと、
前記第１メソッドを実行する場合、前記格納されたアドレスから前記第２メソッドの新しくコンパイルされたコードのアドレスへ直接分岐して、前記第２メソッドを呼び出す（ｄ）ステップとを含む仮想マシン環境におけるメソッド呼び出し方法。
【請求項２】
前記（ａ）ステップにおいて、前記読み取った命令語が前記第１メソッドの最後の命令語である場合に、前記第１メソッドを呼び出すコードの位置を追跡し、前記第１メソッド以前にコンパイルされたコードのアドレスを新しくコンパイルされたコードのアドレスに更新するステップをさらに含む請求項１に記載の仮想マシン環境におけるメソッド呼び出し方法。
【請求項３】
前記記憶空間は、前記第２メソッドのメソッドブロックに含まれる請求項１に記載の仮想マシン環境におけるメソッド呼び出し方法。
【請求項４】
前記記憶空間は、リンクリストで形成される請求項１に記載の仮想マシン環境におけるメソッド呼び出し方法。
【請求項５】
第１メソッドの命令語が第２メソッドを呼び出す命令語に該当する場合、前記命令語コードのアドレスを所定の記憶空間に格納して、前記第２メソッド以前にコンパイルされたコードのアドレスを新しくコンパイルされたコードのアドレスに変更して、前記格納されたアドレスに記録する直接呼び出し情報管理モジュールを含み、
前記第１メソッドを実行する場合、前記格納されたアドレスから前記第２メソッドの新しくコンパイルされたコードのアドレスへ直接分岐して、前記第２メソッドを呼び出す仮想マシンが搭載されたシステム。
【請求項６】
前記第１メソッドの命令語が前記第１メソッドの最後の命令語の場合に、前記直接呼び出し情報管理モジュールは、前記第１メソッドを呼び出すコードの位置を追跡して、前記第１メソッド以前にコンパイルされたコードのアドレスを新しくコンパイルされたコードのアドレスに更新する請求項５に記載のシステム。
【請求項７】
前記記憶空間は、前記第２メソッドのメソッドブロックに含まれる請求項５に記載のシステム。
【請求項８】
前記記憶空間は、リンクリストで形成される請求項５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン環境におけるメソッド呼び出しに関するものであり、より詳しくは、メソッドのアドレスが記録された複数のスロットから構成されたテーブルを用いて、間接的にメソッドを呼び出す方法を改善するためのメソッド呼び出し方法、および前記方法を行う仮想マシンが搭載されたシステムに関するものである。
【背景技術】
【０００２】
従来、アプリケーションプログラムを開発しようとする時には、アプリケーションプログラムが動作するハードウェアプラットフォームに依存していて、同一のアプリケーションプログラムといっても各々のハードウェアプラットフォームに適するように別途に設計しなければならない不便さがあった。そこで、ハードウェアプラットフォームに依存しないアプリケーションプログラムを開発するために、ハードウェアプラットフォームを抽象化させた仮想マシンが開発されたが、代表的なものがジャバ仮想マシンである。
【０００３】
ジャバ言語は、多様なマイクロ波オーブンと遠隔制御機のような多様な電子装置、および電子製品に挿入されるソフトウェアに用いられるプラットフォームで独立的なプログラム言語の必要性によって、米国ＳＵＮ社により開発された。
【０００４】
ジャバは、プラットフォーム独立に実行ファイルを生成するために、ソースコードをジャバのみの独特のバイトコード（ｂｙｔｅｃｏｄｅ）形式にコンパイルして、ジャバ仮想マシンを用いて実行させる。
【０００５】
図１に示すように、「．ｊａｖａ（登録商標）」形式のジャバプログラム１１０は「ｊａｖａｃ」のようなコンパイラ１２０によってコンパイルされ、「．ｃｌａｓｓ」形式のジャバ実行ファイル、すなわちジャババイトコードで記録されたファイルに変換され、このようなクラスファイルはジャバ仮想マシンの内部のインタプリタ１３０によって解釈され、実際に実行される。
【０００６】
図２は、ジャバプログラムを実行するプラットフォームの階層構造を示す図面であって、前記階層構造はジャバ言語で作成されたジャバプログラム２４０と、ジャバ仮想マシン２２０と、ジャバＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）２３０とを含むジャバプラットフォームと、ハードウェア依存的プラットフォーム２１０とを含む。このような構造の下で、ジャバの実行ファイルはプラットフォームに中立的な実行コードであるバイトコードが含まれたクラスファイルであるため、どんなシステムで開発したかに関わらず、ジャバ実行環境（Ｊａｖａ  Ｒｕｎｔｉｍｅ  Ｅｎｖｉｒｏｎｍｅｎｔ）だけあれば実行可能である。
【０００７】
このように、ジャバ仮想マシンの使用は、ハードウェアプラットフォームから独立したアプリケーションプログラムを開発するにおいては非常に便利な方法になったが、ハードウェアプラットフォームに依存したアプリケーションプログラムに比べて、実行速度が遅いという問題がある。すなわち、ジャバ言語で作成されたアプリケーションプログラムを実行する場合、ジャバ仮想マシンにあるインタプリタはバイトコード単位で順次実行するため、ハードウェアプラットフォームに依存したマシンコードにコンパイルされて実行されるアプリケーションプログラムを実行する場合より実行速度が遅い。
【０００８】
このような実行の速度上の問題点を補完するために、バイトコードをハードウェアプラットフォームのマシンコードで実行する時にコンパイルするＪＩＴコンパイラ（Ｊｕｓｔ−Ｉｎ−Ｔｉｍｅ  Ｃｏｍｐｉｌｅｒ）が開発された。
【０００９】
ＪＩＴコンパイラは、ジャバ仮想マシンがジャバアプリケーションを実行する時にメソッド呼び出し時点に呼び出されるメソッドをコンパイルして、バイトコードの代わりにコンパイルされたマシンコードを直接実行させる。この時、一度コンパイルされたマシンコードはメモリに格納されるため、毎回命令語（ｉｎｓｔｒｕｃｔｉｏｎ  ｃｏｄｅ）を持ってきて翻訳する必要がなく、コンパイルする過程で仮想マシンが動作する実際のハードウェアプラットフォームに最適化されることもありえるため、インタプリタだけを用いる場合より実行速度が増加する。
【００１０】
図３では、ＪＩＴコンパイラを搭載したジャバ仮想マシンでのメソッドの状態変化を示している。図３を参照すれば、速い実行のためにバイトコード３１０はＪＩＴコンパイラでコンパイルされたコード３２０に変換され、さらに速い実行のためにＪＩＴコンパイルされたコード３２０は、より最適化されたもう１つのＪＩＴコンパイルされたコード３３０に変換される。また、メモリを確保するためにＪＩＴコンパイルされたコード３２０、３３０からバイトコード３１０に変換される。ここで、ネイティブコード（ｎａｔｉｖｅ  ｃｏｄｅ）はハードウェアプラットフォームに依存したマシンコード（ｍａｃｈｉｎｅ  ｃｏｄｅ）に該当する。
【００１１】
このように、メソッドが多様なコード形態に変わりながら、メソッドが位置するメモリアドレスが変わるようになるため、メソッドを呼び出す時にはメソッドのアドレス変化を考慮しなければならない。すなわち、以前のメソッドアドレスで呼び出すのではなく、変わった後のメソッドのアドレスで呼び出さなければならないのである。
【００１２】
従来、メソッド呼び出しは次のように動作する。
【００１３】
まず、クラスオブジェクトからメソッドテーブルを受け取るロード命令が実行される（ステップ１）。この時、前記メソッドテーブルは、メソッドのアドレスが記録された複数のスロットが配列形態に構成されたデータ構造を示す。前記ステップ１が終了すると、前記メソッドテーブルから呼び出そうとするメソッドのアドレスが記録されたスロットから、前記アドレスを読み取るロード命令が実行される（ステップ２）。それから、前記アドレスへ分岐する命令が実行される（ステップ３）。したがって、呼び出されるメソッドのアドレスが変更されれば、前記メソッドテーブルで該当メソッドに該当するスロットの内容を、変更されたアドレスに更新しなければならない。
【００１４】
上記のような従来の方法による場合には、メソッドを呼び出す度に前記メソッドテーブルからメソッドのアドレスを読み取る過程、すなわち前記ステップ２の過程を行わなければならない。しかし、そのような場合にはメソッドが変更されずに一定に維持される場合にも、必ず前記ステップ２の過程を経なければならないため、それによる不要なシステムオーバーヘッド（ｏｖｅｒｈｅａｄ）が発生するようになる。より少ないリソースを有するシステムに搭載された仮想マシンの場合には、このようなシステムオーバーヘッドはシステム性能にも大きい影響を与え得るようになる。
【特許文献１】韓国特許公開第１０−２００４−００４８２４６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
本発明は、仮想マシン環境でメソッド呼び出し時に呼び出されるメソッドのアドレスを、直接アクセスすることによってシステムのオーバーヘッドを最小化するメソッド呼び出し方法、および前記方法を行う仮想マシンが搭載されたシステムを提供することを目的とする。
【００１６】
本発明の目的は、以上で言及した目的に制限されず、言及していないまた他の目的は下記記載によって当業者が明確に理解できるものである。
【課題を解決するための手段】
【００１７】
前記目的を達成するために、本発明の一態様に係る仮想マシン環境におけるメソッド呼び出し方法は、第１メソッドの命令語を読み取る（ａ）ステップと、前記命令語が第２メソッドを呼び出す命令語に該当する場合、前記命令語コードのアドレスを所定の記憶空間に格納する（ｂ）ステップと、前記第２メソッド以前にコンパイルされたコードのアドレスを新しくコンパイルされたコードのアドレスに変更して、前記格納されたアドレスに記録する（ｃ）ステップと、前記第１メソッドを実行する場合、前記格納されたアドレスから前記第２メソッドの新しくコンパイルされたコードのアドレスへ直接分岐して、前記第２メソッドを呼び出す（ｄ）ステップとを含む。
【００１８】
また、前記目的を達成するために、本発明の一態様に係るシステムは、第１メソッドの命令語が第２メソッドを呼び出す命令語に該当する場合、前記命令語コードのアドレスを所定の記憶空間に格納し、前記第２メソッド以前にコンパイルされたコードのアドレスを新しくコンパイルされたコードのアドレスに変更して、前記格納されたアドレスに記録する直接呼び出し情報管理モジュールを含み、前記第１メソッドを実行する場合、前記格納されたアドレスから前記第２メソッドの新しくコンパイルされたコードのアドレスへ直接分岐して、前記第２メソッドを呼び出す仮想マシンが搭載されたことを特徴とする。
【発明の効果】
【００１９】
本発明に従えば、仮想マシン環境においてメソッド呼び出し時に呼び出されるメソッドのアドレスへ直接アクセスして、システムのオーバーヘッドを最小化することによってシステムの性能を改善する効果がある。
【発明を実施するための最良の形態】
【００２０】
その他、実施形態の具体的な事項は、詳細な説明および図面に含まれている。
【００２１】
本発明の利点および特徴、そしてそれらを達成する方法は、添付する図面と共に詳細に後述する実施形態を参照すれば明確になる。しかし、本発明は以下にて開示する実施形態に限定されず、互いに異なる多様な形態によって実施され、単に本実施形態は本発明の開示が完全なものとなるようにし、本発明が属する技術分野で通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであって、本発明は請求項の範疇によってのみ定義されるものである。
【００２２】
以下、本発明の実施形態によって、仮想マシン環境においてのメソッド呼び出し方法、および前記方法を行う仮想マシンが搭載されたシステムを説明するためのブロック図、または処理フローチャートについての図面を参考にして、本発明について説明する。この時、処理フローチャート面の各ブロックとフローチャート面の組合せは、コンピュータプログラムインストラクションによって実行され得ることを理解できる。これらコンピュータプログラムインストラクションは、汎用コンピュータ、特殊用コンピュータ、またはその他プログラム可能なデータプロセシング装備のプロセッサに搭載され得るため、コンピュータまたはその他プログラム可能なデータプロセシング装備のプロセッサを介して実行されるそのインストラクションが、フローチャートブロックで説明された機能を行う手段を生成するようになる。これらコンピュータプログラムインストラクションは、特定方式で機能を実現するために、コンピュータまたはその他プログラム可能なデータプロセシング装備が備えられるコンピュータによって利用可能または読取可能なメモリに格納されることも可能であるため、そのコンピュータによって利用可能または読取可能なメモリに格納されたインストラクションは、フローチャートブロックで説明された機能を行うインストラクション手段を含む製造品目を生産することも可能である。コンピュータプログラムインストラクションは、コンピュータまたはその他プログラム可能なデータプロセシング装備上に搭載されることも可能であるため、コンピュータまたはその他プログラム可能なデータプロセシング装備上で一連の動作ステップが実行され、コンピュータで実行されるプロセスを生成して、コンピュータまたはその他プログラム可能なデータプロセシング装備を実行するインストラクションは、フローチャートブロックで説明された機能を実行するためのステップを提供することも可能である。
【００２３】
また、各ブロックは特定される論理的機能を実行するための１つ以上の実行可能なインストラクションを含むモジュール、セグメント、またはコードの一部を示すことができる。また、いくつかの代替実行例では、ブロックで言及された機能が順序から外れて発生することも可能であることに注目しなければならない。例えば、連続して図示されている２つのブロックは、事実、実質的に同時に実行されることも可能であり、またはそのブロックが時には該当する機能によって逆の順番で実行されることも可能である。
【００２４】
本発明に関する説明を容易にするために、次のようにメソッドｂｏｏがクラスＡタイプのオブジェクトｏｂｊのメソッドｆｏｏを呼び出すコードを含んでいると仮定する。
ｖｏｉｄ  ｂｏｏ（）
｛
Ａ  ｏｂｊ＝ｎｅｗ  Ａ（）；
…
ｏｂｊ．ｆｏｏ（）；
…
｝
この時、メソッドｂｏｏがＪＩＴコンパイルされる時に実行される動作を、図４に示している。
【００２５】
図４を参照すれば、ＪＩＴコンパイラがメソッドｂｏｏをコンパイルし始めると、まずメソッドｂｏｏの命令語を読み取る（Ｓ４１０）。この時、該当命令語がメソッドｂｏｏの最後の命令語であるか否かを把握する（Ｓ４２０）。
【００２６】
前記命令語がメソッドｂｏｏの最後の命令語である場合には、ステップＳ４６０を行った後にメソッドｂｏｏのコンパイルを完了して、そうではない場合にはステップＳ４３０、Ｓ４４０、Ｓ４５０を行うようになる。ステップＳ４６０においての動作に関しては後述することにする。
【００２７】
ステップＳ４２０において、現在の命令語がメソッドｂｏｏの最後の命令語でない場合には、ＪＩＴコンパイラは現在の命令語をコンパイルして（Ｓ４３０）、この時コンパイルされる命令語がメソッドｆｏｏに対する呼び出しであるか否かを検査する（Ｓ４４０）。
【００２８】
この場合、コンパイルされる命令語がメソッドｆｏｏに対する呼び出しでない場合にはステップＳ４１０に戻り、メソッドｂｏｏの次の命令語を読み取るようになるが（Ｓ４１０）、そうではない場合には、ＪＩＴコンパイラは直接呼び出し情報が格納された記憶空間にメソッドｆｏｏを呼び出したコードのアドレスを格納する（Ｓ４５０）。
【００２９】
この時、前記直接呼び出し情報は、図５に示すようなメソッドブロック５００に格納される。
【００３０】
メソッドブロック５００は、メソッドｆｏｏのバイトコードを示すインタプリタコード情報、メソッドｆｏｏが属するクラス情報、メソッドｆｏｏのコードの大きさ、メソッドｆｏｏのコードのスタート位置などのようなメソッドｆｏｏに関する情報を格納しており、メソッドｆｏｏを呼び出す直接呼び出し情報５１０を含む。直接呼び出し情報５１０を除いた他の情報は、従来のメソッドブロックに格納される情報となることができる。
【００３１】
直接呼び出し情報５１０は、メソッドｆｏｏを呼び出すコードのアドレス（図５では「位置１」と「位置２」と表示）とリンクリスト形態に接続されて管理され得る。
【００３２】
直接呼び出し情報についての管理は、先に説明した通りＪＩＴコンパイラによって行われ得るが、仮想マシンに搭載された別途のソフトウェアモジュールによっても行われ得る。
【００３３】
一方、ステップＳ４２０において現在読み取った命令語がメソッドｂｏｏの最後の命令である場合には、メソッドｂｏｏを呼び出すコードの位置を追跡して、メソッドｂｏｏ以前にコンパイルされたコードのアドレスを、新しくコンパイルされたコードのアドレスに更新した後（Ｓ４６０）、メソッドｂｏｏに対するコンパイルが終了する。
【００３４】
すなわち、メソッドｂｏｏに対するコンパイルが完了すれば、メソッドｂｏｏは他のメソッドによって呼び出されることが可能であるため、その後以前の位置ではない、新しくコンパイルされた位置へ呼び出されなければならない。したがって、既にメソッドｂｏｏを呼び出した全ての位置を追跡して、既存のコードに対するアドレスではない、変更された位置へ分岐されるように変更する。
【００３５】
図４のような方法によりメソッドｂｏｏに対するコンパイルが終了すれば、コンパイルされたメソッドｂｏｏのコードにより該当動作が実行される。この時、メソッドｂｏｏにおいてメソッドｆｏｏを呼び出す場合、従来のように別途のメソッドテーブルを媒介として、メソッドｆｏｏを間接的に呼び出すのではなく、直接呼び出し情報が格納された記憶空間にメソッドｆｏｏを呼び出したメソッドｂｏｏのコードに対するアドレスが格納されているため、前記アドレスにコンパイルされたメソッドｆｏｏのアドレスを直接記録することによって、メソッドｆｏｏを直接呼び出しできるようになる。
【００３６】
図６は、本発明の一実施形態に係るメソッド呼び出しの動作を説明するための図面であって、図６ではメソッドｂｏｏとメソッドｚｏｏとが各々メソッドｆｏｏを呼び出す命令語を含むものとして仮定する。
【００３７】
図６を参照すれば、メソッドｂｏｏのコンパイルされたコード６１０のアドレス０ｘ１８でメソッドｆｏｏへ分岐する命令が実行され、メソッドｚｏｏのコンパイルされたコード６２０のアドレス０ｘ４Ｃでメソッドｆｏｏへ分岐する命令が実行される。
【００３８】
したがって、例えばメソッドｂｏｏとメソッドｚｏｏとがコンパイルされる時、メソッドブロック５００の直接呼び出し情報５１０と接続されたリンクリスト５２０、５３０には、各々メソッドｆｏｏを呼び出すメソッドｂｏｏのコンパイルされたコード６１０のアドレス０ｘ１８と、メソッドｚｏｏのコンパイルされたコード６２０のアドレス０ｘ４Ｃとが格納される。
【００３９】
また、メソッドｂｏｏのコンパイルされたコード６１０、またはメソッドｚｏｏのコンパイルされたコード６２０が実行される時には、メソッドｆｏｏを呼び出す時、直接メソッドｆｏｏのコンパイルされたコード６３０のアドレス（ここでは０ｘ１２３４５６７８に該当）へ分岐するようになり、図６では「ｊｕｍｐ  ０ｘ１２３４５６７８」と表現されている。
【００４０】
従来の技術によれば、メソッドｂｏｏの中からメソッドｆｏｏを呼び出す場合には次のような過程を行った。
Ｔ＝０ｘ１２３４１２３４−（１）ステップ
Ｔ＝ＬＤ（Ｔ）−（２）ステップ
ＪＲ  Ｔ−（３）ステップ
すなわち、（１）ステップは従来のメソッドテーブルにおいて該当メソッドのスロットアドレスを得るステップであり、（２）ステップは（１）ステップで得たスロットアドレスにおいて、メソッドｆｏｏのコンパイルされたコードが記録されたアドレスを得るステップであり、（３）ステップは（２）ステップにおいて得たアドレスへ分岐するステップである。
【００４１】
しかし、先に説明した本発明によれば、メソッドｂｏｏの中からメソッドｆｏｏを呼び出す場合には、次のように１つのステップだけ実行すれば良い。
【００４２】
ＪＲ  ０ｘ１２３４１２３４−（１）’ステップ
一方、呼び出そうとするメソッドが「ｐｒｉｖａｔｅ」または「ｆｉｎａｌ」と定義された場合でも、上記のような方法により該当メソッドを直接呼び出すことができる。
【００４３】
また、本発明に係るメソッド呼び出し方法が適用される仮想マシンにおいて、既にコンパイルされたコードを修正する必要がある場合には、他のスレッドの実行が止まった時、一括的に処理することもできる。
【００４４】
そして、本発明に係るメソッド呼び出し方法が適用される仮想マシンのうち、デコンパイラを含んでいる場合には、メモリ不足を解決するためにコンパイルされたコードの形態を有するメソッドがインタプリタ用コードに変換され得る。その場合には、従来技術によりガーベッジコレクタ（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｏｒ）のスレッド停止メカニズムを利用したり、異なる方法でスレッドを停止させたりして、直ちにメソッド呼び出しに対するアドレス更新が行われるようにできる。
【００４５】
図７は、本発明の一実施形態に係る仮想マシンが搭載されたシステムを示すブロック図である。
図７を参照すれば、本発明に係るシステム７００は、直接呼び出し情報管理モジュール７２０を含む仮想マシン７１０を含む。
【００４６】
この時、「モジュール」という用語は、ソフトウェアまたはＦＰＧＡまたはＡＳＩＣのようなハードウェア構成要素を意味し、モジュールはある役割を行う。ところが、モジュールは、ソフトウェアまたはハードウェアに限定される意味ではない。モジュールは、アドレッシングできる格納媒体にあるように構成することもでき、１つまたはそれ以上のプロセッサを再生させるように構成することもできる。したがって、一例としてモジュールはソフトウェア構成要素、オブジェクト指向ソフトウェア構成要素、クラス構成要素およびタスク構成要素のような構成要素と、プロセス、関数、属性、プロシージャ、サブルーチン、プログラムコードのセグメント、ドライバ、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ、および変数を含む。構成要素とモジュールの中で提供されている機能は、さらに小さい数の構成要素およびモジュールに結合したり、追加的な構成要素とモジュールにさらに分離したりすることができる。それだけでなく、構成要素およびモジュールは、デバイスまたは保安マルチメディアカードのうちの１つ、またはそれ以上のＣＰＵを再生させるように具現されることもできる。
【００４７】
直接呼び出し情報管理モジュール７２０は、先に説明した直接呼び出し情報を管理して、任意のメソッドがバイトコードにコンパイルされたコードに変更されたり、コンパイルされたコードでバイトコードに変更されたりする場合に動作することができる。
【００４８】
この時、直接呼び出し情報管理モジュール７２０は、先に説明した通りメソッドを呼び出すコードのアドレスを、呼び出されるメソッドのメソッドブロックにリンクリストの形態で格納でき、呼び出されるメソッドのコンパイルされたコードのアドレスを更新することができる。このような過程は図４〜図６で説明したので、ここでは省略することにする。
【００４９】
一方、図７では直接呼び出し情報管理モジュール７２０が、仮想マシン７１０にあるＪＩＴコンパイラと分離して示されているが、前記ＪＩＴコンパイラは直接呼び出し情報管理モジュール７２０が提供する機能も合わせて提供するように具現されることも可能である。
【００５０】
図７に示す仮想マシン７１０に属するガーベッジコレクタ、インタプリタ、デコンパイラ、クラスローダは、従来の仮想マシンを構成する要素に該当するため、具体的な説明は省略することにする。
【００５１】
以上、添付した図面を参照して本発明の実施形態を説明したが、本発明が属する技術分野で通常の知識を有する者であれば、本発明がその技術的思想や必須の特徴を変更せず、他の具体的な形態によって実施することができるということを理解できる。したがって、以上で記述した実施形態はすべての面で例示的なものであり、限定的なものではないことを理解しなければならない。
【図面の簡単な説明】
【００５２】
【図１】ジャバプログラムが実行されるまでの一般的な過程を説明するための図である。
【図２】ジャバプログラムを実行するプラットフォームの階層構造を示す図である。
【図３】ＪＩＴコンパイラを搭載したジャバ仮想マシンにおいて、メソッドの状態変化を示す図である。
【図４】本発明の一実施形態によりメソッドをコンパイルする時、動作する過程を示すフローチャートである。
【図５】本発明の一実施形態に係るメソッドブロックの構造を示す図である。
【図６】本発明の一実施形態に係るメソッド呼び出しの動作を説明するための図である。
【図７】本発明の一実施形態に係る仮想マシンが搭載されたシステムを示すブロック図である。
【符号の説明】
【００５３】
７００      システム
７１０      仮想マシン
７２０      直接呼び出し情報管理モジュール
【図１】
2007226788.tif 000003
【図２】
2007226788.tif 000004
【図３】
2007226788.tif 000005
【図４】
2007226788.tif 000006
【図５】
2007226788.tif 000007
【図６】
2007226788.tif 000008
【図７】
2007226788.tif 000009