(57)【要約】【課題】  非ネイティブコードをネイティブコードに効率的に変換し、記憶領域を有効に活用可能なデータ処理装置を提供する。【解決手段】  ハードウェアトランスレータ（１０４）と、ソフトウェアトランスレータ（１０２）とを切替えるための切替えコードを、複数の非ネイティブコードのうち、ソフトウェアトランスレータが効率化ネイティブコード群を生成するための置き換え位置の非ネイティブコードと置き換えた実行コード群を生成する（Ｓ２２０）。また、制御部は、ハードウェアトランスレータが実行コード群に含まれる切替えコードに遭遇した場合、実行コード群の変換をソフトウェアトランスレータ（１０２）に行なわせる（Ｓ３４０，Ｓ３５０）。【選択図】        図８
2006202224.tif 000002
【特許請求の範囲】
【請求項１】
各々が、異なる所定のコードで記述された複数のネイティブコードに基づいて動作するデータ処理装置であって、
ネイティブコードに基づいて、所定の処理を行なう制御部と、
複数の非ネイティブコードを、順次解釈して、１以上のネイティブコードからなるネイティブコード群に、順次、変換するためのハードウェアトランスレータと、
前記制御部上で動作して前記複数の非ネイティブコードを、順次解釈し、前記複数の非ネイティブコードを、順次、前記ネイティブコード群よりもデータ量の少ない１以上のネイティブコードからなる効率化ネイティブコード群に変換するためのソフトウェアトランスレータと、
前記ソフトウェアトランスレータが変換した効率化ネイティブコード群を記憶するための記憶部とを備え、
前記制御部は、前記ハードウェアトランスレータと、前記ソフトウェアトランスレータとを切替えるための切替えコードを、前記複数の非ネイティブコードのうち、前記ソフトウェアトランスレータが前記効率化ネイティブコード群を生成するための置き換え位置の非ネイティブコードと置き換えた実行コード群を生成し、
前記制御部は、前記ハードウェアトランスレータが前記実行コード群に含まれる非ネイティブコードを、順次、ネイティブコード群に変換する途中で、前記切替えコードに遭遇した場合、前記実行コード群の変換を前記ソフトウェアトランスレータに行なわせる、データ処理装置。
【請求項２】
前記置き換え位置は、前記複数の非ネイティブコードのうち、前記ソフトウェアトランスレータが前記効率化ネイティブコード群を生成するための最初の非ネイティブコードが存在する位置である、請求項１に記載のデータ処理装置。
【請求項３】
前記ハードウェアトランスレータが生成する前記ネイティブコード群および前記ソフトウェアトランスレータが生成する前記効率化ネイティブコード群は、それぞれ互換性のあるコードを含む、請求項１に記載のデータ処理装置。
【請求項４】
前記制御部が、前記実行コード群を生成する期間は、前記制御部が前記複数のネイティブコードに基づいて、順次処理を行なっている期間に含まれる、請求項１に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置に関し、特に、データ処理装置に搭載されているプロセッサのネイティブコードに加えて、非ネイティブコードを実行するための機能を備えたデータ処理装置に関する。
【背景技術】
【０００２】
データ処理装置に搭載されているＣＰＵ（Central Processing Unit）の命令コード（以下においては、「ネイティブコード」とも称する）とは異なり、当該搭載されているＣＰＵ以外のＣＰＵの命令コード（以下においては、「非ネイティブコード」または「エイリアンコード」とも称する）で記述されているプログラムを高速に実行させたいという要求がある。非ネイティブコードで記述されているプログラムには、たとえば、Ｊａｖａ（登録商標）バイトコードで記述されたプログラムがある。
【０００３】
この要求を満たすために、非ネイティブコードをネイティブコードに変換する演算部（以下においては、「トランスレータ」とも称する）を備えたデータ処理装置が提案されている。データ処理装置は、非ネイティブコードをネイティブコードに変換するトランスレータと、変換されたネイティブコードを格納しておくための記憶部（たとえば、ＲＡＭ（Random Access Memory））とを備えた装置である。以下においては、非ネイティブコードをネイティブコードに変換する処理をトランスレーションとも称する。また、トランスレーションに要する時間をトランスレーション所要時間とも称する。
【０００４】
データ処理装置では、トランスレータが非ネイティブコードをネイティブコードに変換し、変換されたネイティブコードは記憶部に格納される。そして、記憶部に格納された変換後のネイティブコードをＣＰＵで実行するという処理を繰り返すことで、非ネイティブコードの実行処理が進行する。以下においては、変換後のネイティブコードを実行する時間をネイティブコード実行時間とも称する。
【０００５】
このようなデータ処理装置におけるトランスレータには、ソフトウエアトランスレータ（以下においては、「ＳＷトランスレータ」とも称する）と、ハードウエアトランスレータ（以下においては、「ＨＷトランスレータ」とも称する）との２種類がある。
【０００６】
ＳＷトランスレータは、非ネイティブコードからネイティブコードへの変換処理をソフトウエアで行なう。このソフトウエアは、ネイティブコードで記述されており、当該ネイティブコードはデータ処理装置が備えるＣＰＵが実行する。
【０００７】
ＳＷトランスレータは、変換処理において種々の高度な最適化処理を行なうことが可能で、変換後のネイティブコードを実行効率の高いものとすることができるという長所を有する。
【０００８】
しかし、ＳＷトランスレータは、変換処理に時間がかかるため、そのままでは全体の処理時間（トランスレーション所要時間と、ネイティブコード実行時間との合計時間）も長くなってしまう。そのため、同じ非ネイティブコードを何度もトランスレーションしなくて済むように、一度変換したコードは、記憶部に格納し、再度トランスレーションを行なわないようにするのが普通である。しかし、変換後のコードを格納するためには、大容量の記憶部が必要となり、これが、ＳＷトランスレータの短所である。
【０００９】
ＨＷトランスレータは、非ネイティブコードからネイティブコードへの変換処理を専用のハードウエアで行なう。専用のハードウエアを使用するため、変換処理を高速に行なうことが可能となる。そのため、ＨＷトランスレータは、ＳＷトランスレータのように大容量の記憶部が必要ないという長所を有する。
【００１０】
しかし、ＨＷトランスレータは、変換処理において、ＳＷトランスレータのような高度な最適化処理を行なうことができないため、変換後のネイティブコードは実行効率の低いものになるという短所を有する。
【００１１】
なお、ＨＷトランスレータで、非ネイティブコードとしてのＪａｖａ（登録商標）バイトコードをネイティブコードに効率的に変換する技術が特開２００２−１６３１１６号公報（特許文献１）に開示されている。
【００１２】
このように、ＳＷトランスレータおよびＨＷトランスレータは、それぞれ長所および短所を有する。ＳＷトランスレータは、実行効率の高いネイティブコード、すなわち、高速に実行可能なネイティブコードを生成できるが、生成したネイティブコードを格納しておくために大容量の記憶部が必要である。
【００１３】
一方、ＨＷトランスレータは、変換後のネイティブコードを格納するための記憶部が不要または少なくてすむ。しかし、ＨＷトランスレータにより変換されたネイティブコードを実行する実行速度は、ＳＷトランスレータによって変換されたネイティブコードを実行する速度よりも遅くなる。
【００１４】
そこで、ＨＷトランスレータと、ＳＷトランスレータとを組み合わせてトランスレーションを行なうという技術が、特開２００２−１６９６９６号公報（特許文献２）に開示されている。具体的には、プログラムの関数（メソッド）単位で、ＨＷトランスレータと、ＳＷトランスレータとを切替えて実行するようにしている。また、最初は、どのメソッドもＨＷトランスレータでトランスレーションするが、実行頻度が高いと分かったメソッドから順にＳＷトランスレータでのトランスレーションに切替えるようにしている。
【特許文献１】特開２００２−１６３１１６号公報
【特許文献２】特開２００２−１６９６９６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかしながら、特開２００２−１６９６９６号公報（特許文献２）に開示されている技術（以下においては、従来技術Ａとも称する）では、ＨＷトランスレータからＳＷトランスレータへ切替えるタイミング（以下においては、ＨＷ−ＳＷ切替えタイミングとも称する）は、ＨＷトランスレータでは実行できない非ネイティブコードに遭遇したタイミングに固定されている。
【００１６】
そのため、従来技術Ａでは、ＨＷトランスレータは、メソッドを呼び出すための非ネイティブコードを変換および実行せず、メソッドを呼び出すために予め準備されたネイティブコード（ＳＷトランスレータとＨＷトランスレータとの切替え処理ルーチンを含む）を実行する。そして、その実行の過程で、ＨＷトランスレータと、ＳＷトランスレータとを切替える処理（以下においては、ＨＷ−ＳＷ切替え処理とも称する）が行なわれる。すなわち、従来技術Ａでは、ＨＷトランスレータと、ＳＷトランスレータとの切替えがメソッド単位で行なわれている。
【００１７】
このように、メソッド単位で、または、ＨＷトランスレータがサポートしない非ネイティブコードのタイミングで、ＨＷ−ＳＷ切替え処理が行なわれる場合、ＳＷトランスレータによる変換における最適化が効果を持たないような非ネイティブコードのシーケンスについてもＳＷトランスレータで変換する必要が生じる。
【００１８】
すなわち、従来技術Ａでは、非ネイティブコードから変換されたネイティブコードが実行効率の高いものでない場合においても、変換後のネイティブコードを格納するために記憶部の記憶領域が無駄に消費されてしまうという問題点がある。
【００１９】
本発明は、上述の問題点を解決するためになされたものであって、その目的は、非ネイティブコードをネイティブコードに効率的に変換し、記憶領域を有効に活用可能なデータ処理装置を提供することである。
【課題を解決するための手段】
【００２０】
上記の課題を解決するために、この発明のある局面に従うと、各々が、異なる所定のコードで記述された複数のネイティブコードに基づいて動作するデータ処理装置であって、データ処理装置は、ネイティブコードに基づいて、所定の処理を行なう制御部と、複数の非ネイティブコードを、順次解釈して、１以上のネイティブコードからなるネイティブコード群に、順次、変換するためのハードウェアトランスレータと、制御部上で動作して複数の非ネイティブコードを、順次解釈し、複数の非ネイティブコードを、順次、ネイティブコード群よりもデータ量の少ない１以上のネイティブコードからなる効率化ネイティブコード群に変換するためのソフトウェアトランスレータと、ソフトウェアトランスレータが変換した効率化ネイティブコード群を記憶するための記憶部とを備え、制御部は、ハードウェアトランスレータと、ソフトウェアトランスレータとを切替えるための切替えコードを、複数の非ネイティブコードのうち、ソフトウェアトランスレータが効率化ネイティブコード群を生成するための置き換え位置の非ネイティブコードと置き換えた実行コード群を生成し、制御部は、ハードウェアトランスレータが実行コード群に含まれる非ネイティブコードを、順次、ネイティブコード群に変換する途中で、切替えコードに遭遇した場合、実行コード群の変換をソフトウェアトランスレータに行なわせる。
【発明の効果】
【００２１】
本発明に係るデータ処理装置によると、データ処理装置は、ネイティブコードに基づいて、所定の処理を行なう制御部と、複数の非ネイティブコードを、１以上のネイティブコードからなるネイティブコード群に、順次、変換するためのハードウェアトランスレータと、制御部上で動作して複数の非ネイティブコードを、順次、ネイティブコード群よりもデータ量の少ない効率化ネイティブコード群に変換するためのソフトウェアトランスレータと、効率化ネイティブコード群を記憶するための記憶部とを備える。
【００２２】
制御部は、ハードウェアトランスレータと、ソフトウェアトランスレータとを切替えるための切替えコードを、複数の非ネイティブコードのうち、ソフトウェアトランスレータが効率化ネイティブコード群を生成するための置き換え位置の非ネイティブコードと置き換えた実行コード群を生成する。また、制御部は、ハードウェアトランスレータが実行コード群に含まれる切替えコードに遭遇した場合、実行コード群の変換をソフトウェアトランスレータに行なわせる。
【００２３】
したがって、記憶部には、変換された複数のネイティブコードのうち、ソフトウェアトランスレータにより変換された効率化ネイティブコード群が記憶されるので、記憶部が使用される領域を必要最小現に抑えることができる。その結果、記憶部の記憶領域を有効に活用することができる。
【発明を実施するための最良の形態】
【００２４】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００２５】
＜第１の実施の形態＞
図１は、本発明の第１の実施の形態における、データ処理装置１０００の概略構成を示す図である。
【００２６】
図１を参照して、データ処理装置１０００は、制御部１００と、ＨＷトランスレータ１０４と、データバス１１０と、データ一時記憶部１２０と、データ格納部１３０とを備える。
【００２７】
制御部１００、ＨＷトランスレータ１０４、データ一時記憶部１２０およびデータ格納部１３０は、データバス１１０に接続されている。データバス１１０は、接続されている各部に対し、データを伝達する。
【００２８】
データ格納部１３０には、制御部１００に所定の処理を行なわせるためのプログラム、その他各種データ等が記憶されている。データ格納部１３０は、制御部１００によってデータアクセスされる。
【００２９】
データ格納部１３０は、記憶の消去・書き込みを何度でも行えるＥＰＲＯＭ（Erasable Programmable Read Only Memory）、電気的に内容を書き換えることができるＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）、紫外線を使って記憶内容の消去・再書き込みを何度でも行えるＵＶ−ＥＰＲＯＭ（Ultra-Violet Erasable Programmable Read Only Memory）、その他、不揮発的にデータを記憶保持可能な構成を有する回路のいずれであってもよい。
【００３０】
また、データ格納部１３０は、大容量のデータを記憶可能なハードディスクであってもよい。
【００３１】
制御部１００は、データ格納部１３０に記憶されたプログラムに従って、データ処理装置１０００の各機器に対する各種処理や、演算処理等を行なう機能を有する。制御部１００は、マイクロプロセッサ（Microprocessor）、プログラミングすることができるＬＳＩ（Large Scale Integration）であるＦＰＧＡ（Field Programmable Gate Array）、特定の用途のために設計、製造される集積回路であるＡＳＩＣ（Application Specific Integrated Circuit）、その他の演算機能を有する回路のいずれであってもよい。
【００３２】
また、制御部１００は、データ格納部１３０に記憶されたプログラムに従って
、非ネイティブコードをネイティブコードに変換するＳＷトランスレータ１０２としても動作する。
【００３３】
ＨＷトランスレータ１０４は、制御部１００にとっての非ネイティブコードを、制御部１００にとってのネイティブコードに変換処理する専用のハードウエアプロセッサである。なお、本発明は、ＨＷトランスレータ１０４が、制御部１００と別個に設けられた構成に限定されず、制御部１００がＨＷトランスレータ１０４として動作してもよい。
【００３４】
データ一時記憶部１２０は、制御部１００によってデータアクセスされ、一時的にデータを記憶するワークメモリとして使用される。
【００３５】
データ一時記憶部１２０は、データを一時的に記憶可能なＲＡＭ（Random Access Memory）、ＳＲＡＭ（Static Random Access Memory）、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＤＲＡＭ（Synchronous DRAM）、ダブルデータレートモードという高速なデータ転送機能を持ったＳＤＲＡＭであるＤＤＲ−ＳＤＲＡＭ（Double Data Rate SDRAM）、Rambus社が開発した高速インターフェース技術を採用したＤＲＡＭであるＲＤＲＡＭ（Rambus Dynamic Random Access Memory）、Ｄｉｒｅｃｔ−ＲＤＲＡＭ（Direct Rambus Dynamic Random Access Memory）、その他、データを揮発的に記憶保持可能な構成を有する回路のいずれであってもよい。
【００３６】
図２は、本実施の形態における非ネイティブコードと、ネイティブコードとを記載したコードテーブルＴ１０を示す。
【００３７】
図２を参照して、コードテーブルＴ１０のＣＯＤＥ＿Ａは、データ格納部１３０に記憶されているプログラムのうち１メソッド分の非ネイティブコードを示す。本発明においては、非ネイティブコードは、たとえば、Ｊａｖａ（登録商標）バイトコードであるとする。なお、本発明において、非ネイティブコードは、Ｊａｖａ（登録商標）バイトコードに限定されることなく、制御部１００のネイティブコードに変換する必要があるプログラムのコードであればよい。また、以下においては、データ格納部１３０に記憶されている非ネイティブコードとしての複数のメソッドから構成されるプログラムを非ネイティブコード実行プログラムとも称する。
【００３８】
コードテーブルＴ１０のＣＯＤＥ＿Ｂは、ＳＷトランスレータ１０２が、非ネイティブコードであるＣＯＤＥ＿Ａを、ネイティブコードに変換したものである。
【００３９】
コードテーブルＴ１０のＣＯＤＥ＿Ｃは、ＨＷトランスレータ１０４が、非ネイティブコードであるＣＯＤＥ＿Ａを、ネイティブコードに変換したものである。
【００４０】
コードテーブルＴ１０のＣＯＤＥ＿Ｄ、ＣＯＤＥ＿Ｅについての詳細は後述する。
【００４１】
図３は、ＳＷトランスレータ１０２によって実行される最適化有効範囲検出処理のフローチャートである。
【００４２】
最適化有効範囲検出処理とは、非ネイティブコードをネイティブコードに変換する際、ＳＷトランスレータ１０２が生成したネイティブコードのうち、ＨＷトランスレータ１０４が生成したネイティブコードよりも最適化されているネイティブコードの範囲を求めるための処理である。なお、ＳＷトランスレータ１０２が生成したネイティブコードは、ＨＷトランスレータ１０４が生成したネイティブコードよりもデータ量が小さくなる。
【００４３】
最適化有効範囲検出処理は、トランスレーションが行なわれる前の非ネイティブコードに対して行なわれる。次に、ＳＷトランスレータ１０２が、一例として、１メソッド分のＣＯＤＥ＿Ａをトランスレーションする処理について説明する。
【００４４】
ステップＳ１００では、制御部１００が、変数データＫを１に設定する。そして、制御部１００は、変数データＫをデータ一時記憶部１２０に記憶させる。その後、ステップＳ１０２に進む。
【００４５】
ステップＳ１０２では、制御部１００が、データ格納部１３０に記憶されたＣＯＤＥ＿ＡのＫ番目の非ネイティブコードの読出しを行なう。この場合、読み出されるコードは、ＣＯＤＥ＿Ａの１番目のコード、すなわち、”aload_1”（図２参照）である。その後、ステップＳ１０４に進む。
【００４６】
ステップＳ１０４では、ＳＷトランスレータ１０２が、読み出されたコードのトランスレーションを行なう。この場合、当該トランスレーションにより変換されたネイティブコードは、ＣＯＤＥ＿Ｂの”ld LOCAL1, @((1-max_locals)*4,R12)”（図２参照）となる。その後、ステップＳ１１０に進む。
【００４７】
ステップＳ１１０では、変換後のネイティブコードが所定のデータ量（たとえば、２０バイト）以下であるか否かが判定される。ステップＳ１１０において、ＹＥＳならば、ステップＳ１１２に進む。一方、ステップＳ１１０において、ＮＯならば、ステップＳ１１４に進む。
【００４８】
ステップＳ１１２では、ステップＳ１０４でトランスレーションされた非ネイティブコードの番地に対応づけられたラベルがデータ一時記憶部１２０に記憶される。この場合、番地は、たとえば、“０”番地、ラベルは、たとえば、Ｊ０となり、データ一時記憶部１２０に記憶されるラベルはＪ０となる。その後、ステップＳ１１４に進む。
【００４９】
ステップＳ１１４では、制御部１００が、変数データＫを１インクリメントする。その後、ステップＳ１２０に進む。
【００５０】
ステップＳ１２０では、読出した非ネイティブコードが、メソッドの最後のコードであるか否かが判定される。ステップＳ１２０において、ＹＥＳならば、ステップＳ１２２に進む。一方、ステップＳ１２０で、ＮＯならば、再度、ステップＳ１０２に進む。
【００５１】
すなわち、ステップＳ１０２〜ステップＳ１１４で行なわれる処理が、ステップＳ１２０の条件を満たすまで繰返し行なわれることにより、所定のデータ量以下の変換後の非ネイティブコードが連続する範囲を検出することが可能となる。
【００５２】
ステップＳ１２２では、データ一時記憶部１２０に記憶された複数のラベルのうち、最初および最後のラベルがデータ一時記憶部１２０に記憶される。
【００５３】
図４は、データ一時記憶部１２０に記憶された最初および最後のラベルを示すデータテーブルＴ５０を示す。
【００５４】
図４を参照して、本実施の形態においては、最初のラベルは、たとえば、Ｊ１５であるとする。また、最後のラベルは、たとえば、Ｊ５９であるとする。すなわち、非ネイティブコードであるＣＯＤＥ＿ＡをＳＷトランスレータ１０２が、トランスレーションした結果、最適化された非ネイティブコードが連続する範囲は、ラベルＪ１５に対応する非ネイティブコードから、ラベルＪ５９に対応する非ネイティブコードまでの範囲になる。
【００５５】
再び、図３を参照して、ステップＳ１２２の処理の後、ステップＳ１２４に進む。
【００５６】
ステップＳ１２４では、制御部１００が、変数データｊｐｃに最初のラベル（たとえば、ラベルＪ１５）を設定する。その後、ステップＳ１２６に進む。
【００５７】
ステップＳ１２６では、制御部１００が、変数データｊｐｃ＿ｅｎｄに最後のラベル（たとえば、ラベルＪ５９）を設定する。そして、この最適化有効範囲検出処理は終了する。
【００５８】
再び、図２を参照して、ＣＯＤＥ＿Ｂと、ＣＯＤＥ＿Ｃとを比較すると、変換前のコードであるＣＯＤＥ＿Ａにおいて、ラベルＪ０からラベルＪ１３にそれぞれ対応する複数の非ネイティブコードおよびラベルＪ６０からラベルＪ７１にそれぞれ対応する複数の非ネイティブコードは、ＳＷトランスレータ１０２またはＨＷトランスレータ１０４のいずれによってトランスレーションされても、生成されるネイティブコードのデータ量はほとんど差がないことが分かる。
【００５９】
一方、ラベルＪ１５からラベルＪ５９にそれぞれ対応する複数の非ネイティブコードに関しては、ＳＷトランスレータ１０２で生成されたネイティブコード（ＣＯＤＥ＿Ｂ）の方が、ＨＷトランスレータ１０４で生成されたネイティブコード（ＣＯＤＥ＿Ｃ）よりも、データ量が少なく、命令数や、メモリアクセス回数も少ないコードとなっている。
【００６０】
以上のことから、ラベルＪ１５からラベルＪ５９にそれぞれ対応する複数の非ネイティブコードについては、ＳＷトランスレータ１０２でのトランスレーションが好ましいということが分かる。また、ラベルＪ０からラベルＪ１３にそれぞれ対応する複数の非ネイティブコードおよびラベルＪ６０からラベルＪ７１にそれぞれ対応する複数の非ネイティブコードについては、ＨＷトランスレータ１０４でのトランスレーションが好ましいことが分かる。
【００６１】
次に、前述の好ましいトランスレーションを実現するための処理を説明する。
【００６２】
まず、ＨＷトランスレータ１０４からＳＷトランスレータ１０２へ切替えるための切替えコードを、最適化有効範囲検出処理によって求められた最初のラベル（たとえば、ラベルＪ１５）に対応する非ネイティブコードと置き換えるための切替えコード挿入処理が、制御部１００によって行なわれる。
【００６３】
なお、切替えコードは、ＳＷトランスレータ１０２からＨＷトランスレータ１０４へ切替えるためのコードでもある。また、本実施の形態において、切替えコード挿入処理は、非ネイティブコード実行プログラム内のメソッドが実行されてないときに行なわれる。
【００６４】
図５は、切替えコード挿入処理を示すフローチャートである。
【００６５】
図５を参照して、ステップＳ２００では、制御部１００が、変数データｃｏｄｅに、最適化有効範囲検出処理により、変数データｊｐｃに設定されたラベル（ラベルＪ１５）に対応するＪａｖａ（登録商標）バイトコードを設定する。そして、制御部１００は、変数データｃｏｄｅをデータ一時記憶部１２０に記憶させる。その後、ステップＳ２１０に進む。
【００６６】
ステップＳ２１０では、ネイティブコード登録テーブルにデータ登録が行なわれる。ここで、ネイティブコード登録テーブルとは、最適化有効範囲検出処理によって求められたデータ等を登録するテーブルである。なお、ネイティブコード登録テーブルは、データ一時記憶部１２０内の所定の領域に設けられている。
【００６７】
図６は、ネイティブコード登録テーブルを示す図である。
【００６８】
図６（Ａ）は、ネイティブコード登録テーブルＴ１００を示す。「先頭番地」とは、最適化有効範囲検出処理によって求められた最初のラベルに対応する番地である。「終了番地」とは、最適化有効範囲検出処理によって求められた最後のラベルに対応する番地である。
【００６９】
「ネイティブコード番地」とは、制御部１００またはＨＷトランスレータ１０４が、実行するためのネイティブコードが記憶されている番地である。当該ネイティブコードは、データ一時記憶部１２０内のネイティブコード登録テーブルＴ１００が記憶されている領域とは別の領域（以下においては、実行コード記憶領域とも称する）に記憶される。
【００７０】
図７は、データ一時記憶部１２０内に設けられた実行コード記憶領域を示す図である。
【００７１】
図７を参照して、詳細は後述するが、実行コード記憶領域には、所定のデータ量（たとえば、１バイト）を記憶可能な領域毎に番地が割り当てられている。実行コード記憶領域には、たとえば、０番地〜Ｑ（自然数）番地が割り当てられているとする。１つのネイティブコードは、実行コード記憶領域において、１つの番地に対応する領域、または、連続した複数の番地にそれぞれ対応する領域に記憶される。
【００７２】
再び、図６（Ａ）を参照して、ネイティブコード登録テーブルＴ１００において、「ネイティブコード番地」とは、実行コード記憶領域内の番地を示すものである。「非ネイティブコード」とは、実行コード記憶領域内の前述の先頭番地に記憶されている非ネイティブコード（ｉｌｏａｄ＿４）である。
【００７３】
再び、図５を参照して、ステップＳ２１０の処理では、ネイティブコード登録テーブルＴ１００にデータ登録が行なわれる。登録されるデータは、最適化有効範囲検出処理によって求められた最初および最後のラベル、後述するＳＷトランスレータ制御プログラムを起動させるための起動番地ＳＷＴＲＳＴ、最初のラベル（Ｊ１５）に対応する非ネイティブコード（ｉｌｏａｄ＿４）である。その後、ステップＳ２２０に進む。
【００７４】
ステップＳ２２０では、制御部１００が、データ格納部１３０からＣＯＤＥ＿Ａを読み出す。そして、制御部１００は、ＣＯＤＥ＿Ａのうち、最初のラベル（Ｊ１５）の位置の変数データｃｏｄｅに設定されているＪａｖａ（登録商標）バイトコード（ｉｌｏａｄ＿４）を、前述の切替えコードで置き換える（書き換える）。なお、切替えコードは、一例として、“ＤＩＳＡＢＬＥ＿ＨＷ＿ＴＲＡＮＳＬＡＴＯＲ”である。
【００７５】
以上の処理により、ＣＯＤＥ＿Ａが、図２のコードテーブルＴ１０に示すＣＯＤＥ＿Ｄに変換される。以下においては、ＣＯＤＥ＿Ｄを実行コード群とも称する。そして、制御部１００は、ＣＯＤＥ＿Ｄをデータ格納部１３０に記憶させる。そして、この切替えコード挿入処理は終了する。
【００７６】
次に、実行コード群（ＣＯＤＥ＿Ｄ）をトランスレーションするための実行コードトランスレーション処理を説明する。
【００７７】
図８は、実行コードトランスレーション処理を示すフローチャートである。
【００７８】
図８を参照して、ステップＳ３００では、制御部１００が、今から実行しようとしているメソッドの最初の非ネイティブコードが次に読出されるように設定する。すなわち、制御部１００は、次に読出す非ネイティブコードが、実行コード群の最初の非ネイティブコードになるように設定する。ここで、実行コードの最初の非ネイティブコードとは、今から実行しようとしているメソッドの最初（入口）の非ネイティブコードである。その後、ステップＳ３０１に進む。
【００７９】
ステップＳ３０１では、制御部１００が、ＨＷトランスレータ１０４の動作をオンに設定する。すなわち、制御部１００が、トランスレーションをＨＷトランスレータ１０４で行なうように設定する。その後、ステップＳ３０４に進む。
【００８０】
ステップＳ３０４では、制御部１００が、データ格納部１３０に記憶された実行コード群の次の非ネイティブコードの読出しを行なう。その後、ステップＳ３０５に進む。
【００８１】
ステップＳ３０５では、制御部１００が、ＨＷトランスレータがオフ状態であるか否かを判定する。ステップＳ３０５において、ＹＥＳならば、後述するステップＳ３６４へ進む。一方、ステップＳ３０５において、ＮＯならば、ステップＳ３１０へ進む。ステップＳ３０５が初めて実行される場合、ＨＷトランスレータはオン状態に設定されているのでステップＳ３１０へ進む。
【００８２】
ステップＳ３１０では、制御部１００が、読み出されたコードが、切替えコードとしての“ＤＩＳＡＢＬＥ＿ＨＷ＿ＴＲＡＮＳＬＡＴＯＲ”であるか否かを判定する。ステップＳ３１０において、ＹＥＳならば、後述するステップＳ３３２に進む。一方、ステップＳ３１０において、ＮＯならば、ステップＳ３２０に進む。
【００８３】
ステップＳ３２０では、ＨＷトランスレータ１０４により、読み出されたコードのトランスレーションが行なわれる。ステップＳ３２０が初めて実行される場合、トランスレーションされたコードは、ＣＯＤＥ＿Ｅの１番目のネイティブコードとなる。その後、ステップＳ３２２に進む。
【００８４】
ステップＳ３２２では、制御部１００が、トランスレーションされたコードを実行する。その後、ステップＳ３９０に進む。
【００８５】
ステップＳ３９０では、制御部１００が、最初のメソッドからリターンしたか否かを判定する。ステップＳ３９０において、ＹＥＳならば、この実行コードトランスレーション処理は終了する。一方、ステップＳ３９０において、ＮＯならば、再度、ステップＳ３０４の処理が行なわれる。
【００８６】
すなわち、ステップＳ３０４，Ｓ３２０，Ｓ３２２で行なわれる処理が、ステップＳ３０５，Ｓ３１０，Ｓ３９０のいずれかの条件を満たすまで繰返し行なわれる。なお、ステップＳ３９０の条件が満たされると、実行コードトランスレーション処理は終了する。ステップＳ３０５の条件が満たされると、後述するステップＳ３６４に進む。ステップＳ３１０の条件が満たされると、ステップＳ３３２に進む。
【００８７】
ステップＳ３３２では、制御部１００が、ＨＷトランスレータ１０４の動作をオフに設定する。その後、ステップＳ３４０に進む。このとき、制御部１００がデータ格納部１３０から読み出すプログラムの番地は、たとえば、１０００００番地になる。
【００８８】
ステップＳ３４０では、ＳＷトランスレータ起動処理が行なわれる。
【００８９】
図９は、データ格納部１３０内に設けられたプログラムデータ記憶領域を示す図である。
【００９０】
図９を参照して、プログラムデータ記憶領域内の各領域には、制御部１００に前述した処理を行なわせるためのプログラム、ＳＷトランスレータ起動処理を行なうためのＳＷトランスレータ起動処理プログラム、後述するＳＷトランスレータ制御プログラム等が記憶されている。
【００９１】
ＳＷトランスレータ起動処理プログラムは、データ格納部１３０の、たとえば、１０００００番地から記憶されている。したがって、制御部１００がデータ格納部１３０から読み出すプログラムの番地が、たとえば、１０００００番地になると、制御部１００は、ＳＷトランスレータ起動処理プログラムに応じて、ＳＷトランスレータ起動処理を行なう。
【００９２】
なお、後述するＳＷトランスレータ制御プログラムは、データ格納部１３０の、たとえば、５００００番地から記憶されている。
【００９３】
図１０は、ＳＷトランスレータ起動処理を示すフローチャートである。
【００９４】
図１０を参照して、ステップＳ３４１では、制御部１００が、直前に読み出したＤＩＳＡＢＬＥ＿ＨＷ＿ＴＲＡＮＳＬＡＴＯＲが配置されているデータ格納部１３０の番地を変数データｊｐｃに設定する。その後、ステップＳ３４２に進む。
【００９５】
ステップＳ３４２では、制御部１００が、先頭番地が、変数データｊｐｃに設定されているラベル（ラベルＪ１５）であるデータを、前述のネイティブコード登録テーブルＴ１００から検索する。その後、ステップＳ３４３に進む。
【００９６】
ステップＳ３４３では、制御部１００が、ステップＳ３４２の検索処理により得られたネイティブコード登録テーブルＴ１００内のラベルＪ１５に対応して記憶されている終了番地を読出す。この場合、読出された終了番地はＪ５９である。その後、ステップＳ３４３Ａに進む。
【００９７】
ステップＳ３４３Ａでは、制御部１００が、読み出した終了番地（Ｊ５９）を変数データｊｐｃ＿ｅｎｄに設定する。その後、ステップＳ３４４に進む。
【００９８】
ステップＳ３４４では、制御部１００が、ステップＳ３４２の検索処理により得られた、ネイティブコード登録テーブルＴ１００内のラベルＪ１５に対応して記憶されているネイティブコード番地を読み出す。この場合、読み出されたネイティブコード番地は、前述のＳＷＴＲＳＴである。前述したように、ＳＷＴＲＳＴは、ＳＷトランスレータ制御プログラムを起動させるための番地が設定されている。この場合、ＳＷＴＲＳＴは、“５００００”である。その後、ステップＳ３４６に進む。
【００９９】
ステップＳ３４６では、変数データｎｐｃにＳ３４６で読み出された“５００００”の値を設定する。その後、ステップＳ３４８に進む。
【０１００】
ステップＳ３４８では、変数データｎｐｃの番地にジャンプする。具体的には、制御部１００がデータ格納部１３０から読み出すプログラムの番地が、ｎｐｃ（ＳＷＴＲＳＴ（５００００））となる。したがって、制御部１００は、ＳＷトランスレータ制御プログラムに応じて、ＳＷトランスレータ制御処理を行なう。その後、このＳＷトランスレータ起動処理は終了し、実行コードトランスレーション処理に戻る。
【０１０１】
再び、図８を参照して、ステップＳ３４０の処理の後、ステップＳ３４９に進む。
【０１０２】
ステップＳ３４９では、制御部１００が、ステップＳ３４８の処理においてジャンプ先がＳＷＴＲＳＴであるか否かを判定する。ステップＳ３４９において、ＹＥＳならば、ステップＳ３５０に進む。一方、ステップＳ３４９において、ＮＯならば、再度、ステップＳ３０４の処理が行なわれる。ステップＳ３４９において、ＮＯと判定される場合は、詳細は後述するが、ネイティブコード登録テーブルＴ１００から読出されたネイティブコード番地がＳＷＴＲＳＴ以外の番地（たとえば、Ｎ１５）になっている場合である。
【０１０３】
ステップＳ３５０では、ＳＷトランスレータ制御処理が行なわれる。
【０１０４】
図１１は、ＳＷトランスレータ制御処理を示すフローチャートである。
【０１０５】
図１１を参照して、ステップＳ３５１では、ＳＷトランスレータ１０２が、実行コード群（ＣＯＤＥ＿Ｄ）のうち、変数データｊｐｃ（ラベルＪ１５）に対応する非ネイティブコードから変数データｊｐｃ＿ｅｎｄ（ラベルＪ５９）に対応する非ネイティブコードまでを、トランスレーションする。
【０１０６】
再び、図２を参照して、コードテーブルＴ１０のＣＯＤＥ＿Ｅのうち、ラベルＮ１５に対応するネイティブコードから、後述するラベルＸＮ６０に対応するネイティブコードの前のネイティブコードまでが、ステップＳ３５１によりトランスレーションされたネイティブコードである。
【０１０７】
そして、制御部１００は、当該トランスレーション後のネイティブコードの後に、ラベルＸＮ６０、ＸＮ６６を順に設ける。ラベルＸＮ６０、ＸＮ６６にはそれぞれ、ＳＷトランスレータ１０２からＨＷトランスレータ１０４へ切替えるための切替えコードが追加される。
【０１０８】
当該切替えコードは、ネイティブコードであって、“ＥＮＡＢＬＥ＿ＨＷ＿ＴＲＡＮＳＬＡＴＯＲ”である。ラベルＸＮ６０には、ＥＮＡＢＬＥ＿ＨＷ＿ＴＲＡＮＳＬＡＴＯＲ（６０）が対応する。ここで、ＥＮＡＢＬＥ＿ＨＷ＿ＴＲＡＮＳＬＡＴＯＲ（６０）は、ＨＷトランスレータ１０４で実行コード群（ＣＯＤＥ＿Ｄ）のラベルＪ６０以下に対応する非ネイティブコードをトランスレーションさせる命令である。
【０１０９】
ラベルＸＮ６６には、ＥＮＡＢＬＥ＿ＨＷ＿ＴＲＡＮＳＬＡＴＯＲ（６６）が対応する。ここで、ＥＮＡＢＬＥ＿ＨＷ＿ＴＲＡＮＳＬＡＴＯＲ（６６）は、ＨＷトランスレータ１０４で実行コード群（ＣＯＤＥ＿Ｄ）のラベルＪ６６以下に対応する非ネイティブコードをトランスレーションさせる命令である。以下においては、ステップＳ３５１で生成されたネイティブコードを、効率化ネイティブコード群とも称する。その後、ステップＳ３５２に進む。
【０１１０】
ステップＳ３５２では、制御部１００が、効率化ネイティブコード群を、データ一時記憶部１２０に記憶させる。その後、ステップＳ３５３に進む。
【０１１１】
ステップＳ３５３では、制御部１００が、データ一時記憶部１２０に記憶された効率化ネイティブコード群の先頭番地のラベル（たとえば、ラベルＮ１５）を変数データｎｐｃに設定する。なお、ラベルＮ１５に対応する番地は、たとえば、２０００番地であるとする。その後、ステップＳ３５４に進む。
【０１１２】
ステップＳ３５４では、制御部１００が、先頭番地が、前述の変数データｊｐｃに設定されているラベル（ラベルＪ１５）であるデータを、前述のネイティブコード登録テーブルＴ１００から検索する。その後、ステップＳ３５５に進む。
【０１１３】
ステップＳ３５５では、制御部１００が、ステップＳ３５４の検索処理より得られた、ネイティブコード登録テーブルＴ１００内のラベルＪ１５に対応してデータ一時記憶部１２０に記憶されているネイティブコード番地を読み出す。そして、制御部１００は、当該読出したネイティブコード番地を変数データｎｐｃ（ラベルＮ１５）で書き換える。
【０１１４】
再び、図６を参照して、図６（Ｂ）が、Ｓ３５５によってネイティブコード登録テーブルＴ１００からデータ変更されたネイティブコード登録テーブルＴ１００Ａである。
【０１１５】
再び、図１１を参照して、ステップＳ３５５の処理の後、ステップＳ３５６に進む。
【０１１６】
ステップＳ３５６では、変数データｎｐｃの番地にジャンプする。具体的には、制御部１００がデータ格納部１３０から次に読み出すコードの番地がｎｐｃ（Ｎ１５）となるように設定する。ステップＳ３５６の処理の後、このＳＷトランスレータ制御処理は終了し、図８の実行コードトランスレーション処理に戻る。
【０１１７】
再び、図８を参照して、ステップＳ３５０の処理の後、再度、ステップＳ３０４の処理が行なわれる。
【０１１８】
ステップＳ３０４では、制御部１００は、データ一時記憶部１２０に記憶されている効率化ネイティブコード群のうち、前述のステップＳ３５３で変数データｎｐｃに設定されたラベルＮ１５に対応するネイティブコードを、データ一時記憶部１２０から読み出す。その後、再度、ステップＳ３０５に進む。
【０１１９】
ステップＳ３５０の処理が行なわれた後、ステップＳ３０５の処理が行なわれる場合、ＨＷトランスレータはオフ状態であるため、ステップＳ３０５の判定により、ステップＳ３６４に進む。
【０１２０】
ステップＳ３６４では、制御部１００が、読出したネイティブコードが、“ＥＮＡＢＬＥ＿ＨＷ＿ＴＲＡＮＳＬＡＴＯＲ”であるか否かを判定する。ステップＳ３６４において、ＹＥＳならば、後述するステップＳ３７６に進む。一方、ステップＳ３６４において、ＮＯならば、ステップＳ３６５に進む。
【０１２１】
ステップＳ３６５では、制御部１００が、読出したネイティブコードを実行する。その後、再度、ステップＳ３９０の処理が行なわれる。
【０１２２】
ステップＳ３９０では、制御部１００が、最初のメソッドからリターンしたか否かを判定する。ステップＳ３９０において、ＹＥＳならば、この実行コードトランスレーション処理は終了する。一方、ステップＳ３９０において、ＮＯならば、再度、ステップＳ３０４の処理が行なわれる。
【０１２３】
ステップＳ３０４では、制御部１００が、データ一時記憶部１２０に記憶されている効率化ネイティブコード群のうち、ステップＳ３６５で実行されたネイティブコードの次のネイティブコードを、データ一時記憶部１２０から読み出す。その後、再度、ステップＳ３０５に進む。この場合、ステップＳ３０５では、ＨＷトランスレータはオフであるため、再度、ステップＳ３６４の処理が行なわれる。
【０１２４】
すなわち、ＨＷトランスレータがオフの間、ステップＳ３０４，Ｓ３６５で行なわれる処理が、ステップＳ３６４またはステップＳ３９０の条件を満たすまで繰返し行なわれる。ステップＳ３６４の条件が満たされると、ステップＳ３７６に進む。この場合、読み出されたコードは、ラベルＸＮ６０に対応するＥＮＡＢＬＥ＿ＨＷ＿ＴＲＡＮＳＬＡＴＯＲ（６０）またはラベルＸＮ６６に対応するＥＮＡＢＬＥ＿ＨＷ＿ＴＲＡＮＳＬＡＴＯＲ（６６）のいずれかである。
【０１２５】
ここでは、読み出されたコードは、ラベルＸＮ６０に対応するＥＮＡＢＬＥ＿ＨＷ＿ＴＲＡＮＳＬＡＴＯＲ（６０）であるとするとして処理を説明する。なお、読み出されたコードが、ＥＮＡＢＬＥ＿ＨＷ＿ＴＲＡＮＳＬＡＴＯＲ（６６）の場合も、以下に説明する処理と同様な処理が行なわれる。
【０１２６】
ステップＳ３７６では、制御部１００が、実行コード群（ＣＯＤＥ＿Ｄ）のうち、ネイティブコードＥＮＡＢＬＥ＿ＨＷ＿ＴＲＡＮＳＬＡＴＯＲにより指定されたラベル（この場合、Ｊ６０）に対応する非ネイティブコードを、データ格納部１３０から次に読み出すように設定する。その後、再度、ステップＳ３０１の処理が行なわれる。
【０１２７】
ステップＳ３０１では、制御部１００が、ＨＷトランスレータ１０４の動作をオンに設定する。その後、再度、ステップＳ３０４の処理が行なわれる。
【０１２８】
そして、前述と同様にして、ＨＷトランスレータがオンの間、ステップＳ３０４，Ｓ３２０，Ｓ３２２の処理が繰返し行なわれる。その後、再度、ステップＳ３９０の処理が行なわれる。
【０１２９】
ステップＳ３９０では、制御部１００が、最初のメソッドからリターンしたか否かを判定する。ステップＳ３９０において、ＹＥＳならば、この実行コードトランスレーション処理は終了する。
【０１３０】
以上説明した処理により、データ一時記憶部１２０に記憶されて制御部１００により実行される、トランスレーション後のネイティブコードは、ＳＷトランスレータ１０２により生成された効率化ネイティブコード群のみとなる。したがって、データ一時記憶部１２０が使用される領域を必要最小現に抑えることができる。その結果、データ一時記憶部１２０の記憶領域を有効に活用することができる。
【０１３１】
また、実行コード群（ＣＯＤＥ＿Ｄ）のうち、ＨＷトランスレータ１０４よりもトランスレーションの速度が遅いＳＷトランスレータ１０２によりトランスレーションされたコード以外の実行コード群は、ＨＷトランスレータ１０４でトランスレーションされ、実行される。したがって、１つのメソッドのうち、全てをＳＷトランスレータ１０４でトランスレーションするよりも、メソッドの実行速度の向上を図ることができる。
【０１３２】
なお、実行コード群（ＣＯＤＥ＿Ｄ）のうち、ＳＷトランスレータ１０２でトランスレーションした部分（効率化ネイティブコード群）と、ＣＯＤＥ＿ＡをＳＷトランスレター１０２のみでトランスレーションしたＣＯＤＥ＿Ｂのうちの、効率化ネイティブコード群に対応する部分とは、いくつか異なるコードがある。
【０１３３】
これは以下の理由による。まず、ＣＯＤＥ＿Ｂのうちの、効率化ネイティブコード群に対応する部分は、ＨＷトランスレータ１０４との互換性が不要であるため、メソッド全体に対して、メモリ領域に対しグローバルな割り当てをすることにより最適化が施されている。しかし、効率化ネイティブコード群は、ＨＷトランスレータ１０４との互換性が必要であるため、当該最適化が施されていない。これが上記理由に該当する。
【０１３４】
すなわち、ＣＯＤＥ＿ＡをＨＷトランスレータ１０４がトランスレーションすることにより生成したネイティブコード群（ＣＯＤＥ＿Ｂのうちの効率化ネイティブコード群に対応する部分）および実行コード群（ＣＯＤＥ＿Ｄ）をＳＷトランスレータ１０２がトランスレーションすることにより生成した効率化ネイティブコード群は、それぞれ互換性のあるコードを含む。
【０１３５】
＜第２の実施の形態＞
第１の実施の形態では、実行コード群を生成するための切替えコード挿入処理は、メソッドが実行されていないときに行なわれていたが、本実施の形態では、非ネイティブコード実行プログラム内のメソッドの実行中に切替えコード挿入処理を行なう処理について説明する。
【０１３６】
なお、本実施の形態のデータ処理装置は、第１の実施の形態で説明したデータ処理装置１０００と同様な構成および機能を有する。また、本実施の形態では、データ処理装置１０００内の各部の動作および機能も、第１の実施の形態と同様であるとする。
【０１３７】
図１２は、実行コード群リアルタイム生成処理を示すフローチャートである。なお、実行コード群リアルタイム生成処理の前には、前述した最適化有効範囲検出処理が行なわれ、変数データｊｐｃ，ｊｐｃ＿ｅｎｄにラベルが設定されているとする。
【０１３８】
図１２を参照して、ステップＳ４００では、制御部１００が、データ格納部１３０に記憶されている非ネイティブコード実行プログラムにより指定された１メソッドの読出しを行なう。なお、制御部１００は、読出したメソッド毎に、読出した回数のデータを対応付けて、データ一時記憶部１２０に記憶させる。その後、ステップＳ４１０に進む。
【０１３９】
ステップＳ４１０では、制御部１００が、読出したメソッドの読み出された回数が所定値（回数）以上であるか否かを判定する。ステップＳ４１０において、ＹＥＳならば、４２０に進む。一方、ステップＳ４１０において、ＮＯならば、ステップＳ４１２に進む。
【０１４０】
ステップＳ４１２では、制御部１００によりメソッドが実行される。なお、実行されるメソッドは、ＳＷトランスレータ１０２またはＨＷトランスレータ１０４のいずれでトランスレーションされたネイティブコードであってもよい。その後、ステップＳ４１４に進む。
【０１４１】
ステップＳ４１４では、ステップＳ４１２により実行されたメソッドにより、読出しの対象となったメソッドが、制御部１００により、データ格納部１３０から読み出される。その後、再度ステップＳ４１０に進む。
【０１４２】
すなわち、ステップＳ４１０の条件を満たすまで、ステップＳ４１２，Ｓ４１４の処理が繰返し行なわれる。ステップＳ４１０の条件を満たすと、ステップＳ４３０に進む。したがって、ステップＳ４１０の条件を満たしたメソッドは、繰返し実行される頻度の高いメソッド（以下においては、高実行確率メソッドとも称する）となる。
【０１４３】
ステップＳ４３０では、制御部１００が、読み出されたメソッド中に変数データｊｐｃに設定されたラベルに対応する非ネイティブコードが存在するか否かを判定する。ステップＳ４３０において、ＹＥＳならば、ステップＳ４４０に進む。一方、ステップＳ４３０において、ＮＯならば、再度、ステップＳ４１４に進む。
【０１４４】
ステップＳ４４０では、前述した切替えコード挿入処理が行なわれる。切替えコード挿入処理は、前述した処理と同様なので詳細な説明は繰り返さない。その後、ステップＳ４５０に進む。
【０１４５】
ステップＳ４５０では、前述した実行コードトランスレーション処理が行なわれる。実行コードトランスレーション処理は、前述した処理と同様なので詳細な説明は繰り返さない。その後、再度、ステップＳ４１４に進む。
【０１４６】
そして、ステップＳ４１２により実行されたメソッドが非ネイティブコード実行プログラムを終了させるためのメソッドであれば、この実行コード群リアルタイム生成処理は終了する。
【０１４７】
以上の処理により、前述の実行コード群が生成される期間は、非ネイティブコード実行プログラム内のメソッドの実行中の期間、すなわち、制御部１００が、複数のネイティブコードに基づいて、順次処理を行なっている期間に含まれることとなる。
【０１４８】
以上説明したように、本実施の形態では、非ネイティブコード実行プログラム内のメソッドの実行中においても、切替えコード挿入処理を行なう処理を行なうことが可能となるとともに、第１の実施の形態と同様な効果を得ることが可能となる。
【０１４９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１５０】
【図１】本発明の第１の実施の形態における、データ処理装置の概略構成を示す図である。
【図２】本実施の形態における非ネイティブコードと、ネイティブコードとを記載したコードテーブルを示す。
【図３】ＳＷトランスレータによって実行される最適化有効範囲検出処理のフローチャートである。
【図４】データ一時記憶部に記憶された最初および最後のラベルを示すデータテーブルを示す。
【図５】切替えコード挿入処理を示すフローチャートである。
【図６】ネイティブコード登録テーブルを示す図である。
【図７】データ一時記憶部内に設けられた実行コード記憶領域を示す図である。
【図８】実行コードトランスレーション処理を示すフローチャートである。
【図９】データ格納部内に設けられたプログラムデータ記憶領域を示す図である。
【図１０】ＳＷトランスレータ起動処理を示すフローチャートである。
【図１１】ＳＷトランスレータ制御処理を示すフローチャートである。
【図１２】実行コード群リアルタイム生成処理を示すフローチャートである。
【符号の説明】
【０１５１】
１００  制御部、１０２  ＳＷトランスレータ、１０４  ＨＷトランスレータ、１２０  データ一時記憶部、１３０  データ格納部、１０００  データ処理装置。
【図１】
2006202224.tif 000003
【図２】
2006202224.tif 000004
【図３】
2006202224.tif 000005
【図４】
2006202224.tif 000006
【図５】
2006202224.tif 000007
【図６】
2006202224.tif 000008
【図７】
2006202224.tif 000009
【図８】
2006202224.tif 000010
【図９】
2006202224.tif 000011
【図１０】
2006202224.tif 000012
【図１１】
2006202224.tif 000013
【図１２】
2006202224.tif 000014