JP2002073345A - 情報処理装置及び記録媒体 - Google Patents
情報処理装置及び記録媒体Info
- Publication number
- JP2002073345A JP2002073345A JP2000255317A JP2000255317A JP2002073345A JP 2002073345 A JP2002073345 A JP 2002073345A JP 2000255317 A JP2000255317 A JP 2000255317A JP 2000255317 A JP2000255317 A JP 2000255317A JP 2002073345 A JP2002073345 A JP 2002073345A
- Authority
- JP
- Japan
- Prior art keywords
- virtual machine
- instruction code
- storage unit
- bytecode
- machine instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
る。 【解決手段】プログラムローダ16は、クラスタファイ
ル12からバイトコードを読み出し、バイトコードがサ
ブルーチンコールであれば、判定情報記憶部17の内容
に基づいてこのバイトコード及び引数設定バイトコード
のロード先を、Java仮想マシン13にするかJIT
コンパイラ15にするかを決定し、決定されたロード先
にバイトコードをロードするという処理を繰り返し実行
する。バイトコードがサブルーチンコールでなければロ
ード先をJava仮想マシン13にする。判定情報記憶
部17の内容は、クラスファイル12の実行前に、クラ
スタファイル16の内容を解析する静的アナライザ18
又は人により決定される。
Description
ーム上で、仮想マシンがその仮想マシン命令コードを解
釈実行しJITコンパイラが仮想マシン命令コードを動
的にコンパイルし実行する情報処理装置及びその処理を
行うプログラムが記録されたコンピュータ読み取り可能
な記録媒体に関する。
ム実行環境を示すソフトウェア概略ブロック図である。
ファイル10は、Javaコンパイラ11により、バイ
トコード列とデータを含むクラスファイル12に変換さ
れる。バイトコードは、JVM(Java Virtual Machin
e)13により解釈され実行される。JVM13は、W
indows(登録商標)14上で動作しており、Wi
ndows14が持っている各種サブルーチンを利用す
ることができる。JVM13を備えることにより、マシ
ンに依存しないバイトコードを実行することができると
いう利点がある反面、オーバヘッドが大きいという問題
がある。
s14上で動作するJIT(Just-In-Time)コンパイラ
15を備え、クラスファイル12のバイトコードをJI
Tコンパイラ15により実行時にコンパイル、すなわち
動的にコンパイルし、その結果を記憶しておき、2回目
以降このバイトコード(仮想マシンコード)を実行する
場合には、再度コンパイルせずにコンパイルされたネイ
ティブコード(ネイティブマシンコード)を実行すると
いう方法が用いられている。
ファイル12の内容によっては、JITコンパイラ15
で処理した方がJVM13で処理するよりも遅くなる場
合がある。この点は、Windows14以外のOS上
のJavaプラットホーム(Javaコンパイラ11、
JVM13及びJITコンパイラ15は、Window
s14上で動作するJavaプラットホームを構成して
いる。)で動作するJavaプログラムについても同様
であり、また、Smalltalkなどの他の仮想マシ
ンプログラムについても同様である。
み、仮想マシンのプログラムをより高速に実行すること
が可能な情報処理装置及びその処理を行うプログラムが
記録されたコンピュータ読み取り可能な記録媒体を提供
することにある。
では、OSプラットフォーム上で仮想マシンがその仮想
マシン命令コードを解釈実行する情報処理装置におい
て、仮想マシン命令コード列が格納されるプログラム記
憶部と、判定情報が格納される判定情報記憶部と、ロー
ドされた仮想マシン命令コードをコンパイルして実行す
るJITコンパイラがインストールされた記憶部と、該
プログラム記憶部から仮想マシン命令コードを読み出
し、該判定情報に基づいてこの仮想マシン命令コードの
ロード先を該仮想マシンにするか該JITコンパイラに
するかを決定し、決定されたロード先に該仮想マシン命
令コードをロードするという処理を繰り返し実行するプ
ログラムローダがインストールされた記憶部とを有す
る。
想マシン命令コードが読み出される毎に、判定情報の内
容に応じて仮想マシン又はJITコンパイラで実行され
るので、仮想マシンのみ又はJITコンパイラのみで仮
想マシン命令コードを実行する場合よりも処理時間が短
縮される。
説明から明らかになる。
実施形態を説明する。
ログラム実行環境を示すソフトウェア概略ブロック図で
ある。
電話などの情報処理装置にインストールされている。
イトコードを、その内容に応じてJVM13で解釈実行
し又はJITコンパイラ15で動的にコンパイルし実行
するという処理を繰り返し行うことにより、JVM13
のみ又はJITコンパイラ15のみで実行する場合より
も高速化を図っている。
るかJITコンパイラ15とするかは、プログラムロー
ダ16により、判定情報記憶部17の内容に基づいて判
定される。判定情報記憶部17の内容は、クラスファイ
ル12の実行前に、クラスファイル12の内容を解析す
る静的アナライザ18又は人(プログラム開発者やシス
テム運用者など)により決定される。
手順を示す概略フローチャートである。
ファイル12から次のバイトコードを読み出す。
ードが終了コードであれば処理を終了し、そうでなけれ
ば次のステップS3へ進む。
コールでなければステップS4へ進む。このバイトコー
ドがサブルーチンコールであれば、プログラムローダ1
6は、クラスファイル12からこれに関連したバイトコ
ード群(現在のバイトコードで呼び出されるサブルーチ
ン)をクラスファイル12から読み出し、バイトコード
群が、過去にJITコンパイラ15でコンパイル済みで
ありその結果がメモリに格納されていればステップS7
へ進み、そうでなければステップS4へ進む。
コードがサブルーチンコールでなければステップS5へ
進む。このバイトコードがサブルーチンコールであれ
ば、プログラムローダ16は、判定情報記憶部17の内
容を参照し、バイトコード群をコンパイルするかどうか
を後述のようにして判定する。コンパイルしないと判定
した場合にはステップS5へ進み、すると判定した場合
にはステップS6へ進む。
コードをJVM13にロードする。JVM13は、この
バイトコードを解釈し、得られたネイティブコードをM
PUに供給して実行させる。次にステップS1へ戻る。
コード群をJITコンパイラ15にロードする。JIT
コンパイラ15は、このバイトコード群をコンパイル
(ネイティブコードに変換)する。
れているネイティブコードをMPUに供給して実行させ
る。次に、ステップS1へ戻る。
パイラ15はいずれもWindows14上で動作し、
Windows14が持っているサブルーチンを呼び出
すことによりこれを利用することができる。
ドを実行中にWindows14のグラフィック描画ラ
イブラリが呼び出され、その実行中にさらにデバイスド
ライバが読み出される場合を示している。このような処
理では、グラフィック描画ライブラリ及びデバイスドラ
イバでの処理時間が比較的長いので、グラフィック描画
ライブラリを呼び出すバイトコード群をJVM13で実
行してもJITコンパイラ15で実行してもほぼ同じに
なる。この場合、JITコンパイラ15で実行すると、
コンパイルされたネイティブコード列を記憶しておく必
要があるので、プログラムローダ16はこのバイトコー
ド群をJVM13にロードする。
バイトコード群がJVM13で繰り返し実行される場合
とJITコンパイラ15で繰り返し実行される場合の処
理時間の比較を示す。
処理時間t1となるが、JITコンパイラ15で実行す
る場合にはバイトコード群が1回コンパイルされると2
回目以降はコンパイルが省略されるので、2回目以降の
処理時間t3は1回目の処理時間(t2+t3)よりも
コンパイル時間t2だけ短くなる。なお、時間t3にも
オーバヘッドが含まれている。
回のみ実行する場合には、JVM13を用いた方が高速
であるが、このバイトコード群を2回実行する場合には
JVM13とJITコンパイラ15のいずれを用いても
ほぼ同じとなり、このバイトコード群を3回以上実行す
る場合にはJITコンパイラ15を用いた方が処理時間
を短縮することができることを示している。また、図4
(B)は、あるバイトコード群を1回のみ実行する場合
にはJVM13とJITコンパイラ15のいずれを用い
てもほぼ同じ時間となるが、このバイトコード群を2回
以上実行する場合には、JITコンパイラ15を用いた
方が処理時間を短縮できることを示している。
18又は人により行われて、判定情報記憶部17に格納
すべき情報が決定される。
例と、これに関係した部分とを示す説明図である。
ラ15で実行される可能性のあるサブルーチンコールバ
イトコードBCα〜BCδ(引数を設定するバイトコー
ドは含まれない。)が参照バイトコードとして予め格納
されている。各参照バイトコードには、後述のフラグ
F、比較値N及びカウントkの情報が付加されている。
フラグF及び比較値Nは、参照バイトコードと同様に、
静的アナライザ18又は人により決定される。
れた1つのサブルーチンコールバイトコードBCiに対
する図5のプログラムローダ16の処理を示すフローチ
ャートである。
イトコードに対応したカウントkをゼロクリアする。
記憶部17の次の参照コードと比較する。最初は、バイ
トコードBCiを参照コードBCαと比較する。
バイトコードがなければステップS12へ進み、そうで
なければステップS13へ進む。
3にロードし、処理を終了する。
S14へ進み、そうでなければステップS10へ戻る。
15へ進み、F=‘1’であればステップS18へ進
む。
ントする。
へ戻り、N=kであれば次のステップS17へ進む。
バイトコードをクラスファイル12から読み出し、これ
とバイトコードBCiとからなるバイトコード群をJI
Tコンパイラ15にロードする。
iとF=‘1’の参照バイトコードとが一致する場合に
はバイトコードBCiを含むバイトコード群がJITコ
ンパイラ15で実行され、バイトコードBCiとF=
‘0’の参照バイトコードとが一致する場合にはこのバ
イトコードBCiがN回以上出現したときにバイトコー
ドBCiを含むバイトコード群がJITコンパイラ15
で実行される。例えば、図4(A)の場合にはF=
‘1’、N=2であり、バイトコードBCiが2回以上
出現したときに、その後3回以上出現すると予測して、
バイトコードBCiを含むバイトコード群をJITコン
パイラ15で実行する。図4(B)の場合にはF=
‘0’であり、バイトコードBCiが出現すればこれを
含むバイトコード群を必ずJITコンパイラ15で実行
する。
のようにその内容に応じてJVM13又はJITコンパ
イラ15で実行されるので、JVM13のみ又はJIT
コンパイラ15のみでバイトコードを実行する場合より
も処理時間が短縮される。
まれる。
ラ15で実行した場合の1回目の時間と2回目の時間t
2及びt3を予め判定情報記憶部17に格納しておき、
クラスファイル12の実行中において、このバイトコー
ド群が最初に出現したときプログラムローダ16はこれ
をJVM13にロードし、その実行時間t1を測定して
これを判定情報記憶部17に格納し、t1〜t3の値に
基づいて比較値Nを決定するようにしてもよい。
値Nとカウントkとを用い、kの初期値を0とし、F=
‘1’に対応したNの値を1とし、バイトコードBCi
と参照バイトコードとが一致した場合にkを1だけイン
クリメントし、k=Nのときバイトコード群をJITコ
ンパイラ15にロードするようにしてもよい。また、k
の初期値をNとし、F=‘1’に対応したNの値を1と
し、バイトコードBCiと参照バイトコードとが一致し
た場合にkを1だけデクリメントし、k=0のときバイ
トコード群をJITコンパイラ15にロードするように
してもよい。
も適用される。仮想マシンは、Windows14以外
のOS上で動作するものであってもよい。
環境を示すソフトウェア概略ブロック図である。
ローチャートである。
ndowsのグラフィック描画ライブラリが呼び出さ
れ、その実行中にさらにデバイスドライバが読み出され
る場合を示す説明図である。
ド群がJVMで繰り返し実行される場合とJITコンパ
イラで繰り返し実行される場合の処理時間の比較を示す
線図である。
に関係した部分とを示す説明図である。
ーチンコールバイトコードBCiに対する図5のプログ
ラムローダの処理を示すフローチャートである。
トウェア概略ブロック図である。
Claims (5)
- 【請求項1】 OSプラットフォーム上で仮想マシンが
その仮想マシン命令コードを解釈実行する情報処理装置
において、 仮想マシン命令コード列が格納されるプログラム記憶部
と、 判定情報が格納される判定情報記憶部と、 ロードされた仮想マシン命令コードをコンパイルして実
行するJITコンパイラがインストールされた記憶部
と、 該プログラム記憶部から仮想マシン命令コードを読み出
し、該判定情報に基づいてこの仮想マシン命令コードの
ロード先を該仮想マシンにするか該JITコンパイラに
するかを決定し、決定されたロード先に該仮想マシン命
令コードをロードするという処理を繰り返し実行するプ
ログラムローダがインストールされた記憶部と、 を有することを特徴とする情報処理装置。 - 【請求項2】 上記判定情報は、参照命令コードを有
し、上記プログラムローダが動作する前に上記判定情報
記憶部に格納されており、 上記プログラムローダは、上記プログラム記憶部から読
み出した仮想マシン命令コードが該参照命令コードと一
致すると判定すれば、該仮想マシン命令コードを上記J
ITコンパイラにロードする、ことを特徴とする請求項
1記載の情報処理装置。 - 【請求項3】 上記判定情報は、比較値とカウントとを
さらに有し、 上記プログラムローダは、上記プログラム記憶部から読
み出した仮想マシン命令コードが該参照命令コードと一
致すると判定すれば、該カウントを変化させ、該カウン
トと該比較値との比較結果に基づいて該仮想マシン命令
コードの上記ロード先を判定する、 ことを特徴とする請求項2記載の情報処理装置。 - 【請求項4】 上記プログラムローダが動作する前に、
上記仮想マシン命令コード列を解析して上記参照命令コ
ードを決定する静的アナライザがインストールされた記
憶部、 をさらに有することを特徴とする請求項2又は3記載の
情報処理装置。 - 【請求項5】 仮想マシン命令コードを読み出し、判定
情報に基づいてこの仮想マシン命令コードのロード先
を、仮想マシン命令コードをOSプラットフォーム上で
解釈実行する仮想マシンにするか、仮想マシン命令コー
ドをOSプラットフォーム上で動的にコンパイルし実行
するJITコンパイラにするかを決定し、決定されたロ
ード先に該仮想マシン命令コードをロードする、 という処理を繰り返し実行するプログラムローダが記録
されていることを特徴とするコンピュータ読み取り可能
な記録媒体。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000255317A JP2002073345A (ja) | 2000-08-25 | 2000-08-25 | 情報処理装置及び記録媒体 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000255317A JP2002073345A (ja) | 2000-08-25 | 2000-08-25 | 情報処理装置及び記録媒体 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2002073345A true JP2002073345A (ja) | 2002-03-12 |
Family
ID=18744129
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000255317A Pending JP2002073345A (ja) | 2000-08-25 | 2000-08-25 | 情報処理装置及び記録媒体 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2002073345A (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN100349114C (zh) * | 2004-01-14 | 2007-11-14 | 三星电子株式会社 | 用于增加java程序处理能力的系统和方法 |
| JP2010191734A (ja) * | 2009-02-19 | 2010-09-02 | Hitachi Software Eng Co Ltd | 画像再生装置及び中間語プログラム実行方法 |
| US8056061B2 (en) | 2004-10-21 | 2011-11-08 | Samsung Electronics Co., Ltd. | Data processing device and method using predesignated register |
| WO2012045238A1 (zh) * | 2010-10-09 | 2012-04-12 | 中兴通讯股份有限公司 | 一种移动设备上应用程序的启动方法及装置 |
| CN111880806A (zh) * | 2020-07-23 | 2020-11-03 | 深圳融卡智能科技有限公司 | 应用执行方法与应用执行系统 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH11272476A (ja) * | 1997-10-06 | 1999-10-08 | Sun Microsyst Inc | バイトコードされたプログラムを動的に最適化するための方法及び装置 |
| JP2000132408A (ja) * | 1998-10-21 | 2000-05-12 | Fujitsu Ltd | コンピュ―タア―キテクチャエミュレ―ションシステム |
| JP2000172512A (ja) * | 1998-12-03 | 2000-06-23 | Internatl Business Mach Corp <Ibm> | バイトコ―ドを実行するための方法およびデ―タ処理システム |
| JP2000222220A (ja) * | 1999-01-28 | 2000-08-11 | Internatl Business Mach Corp <Ibm> | 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ |
| JP2000330792A (ja) * | 1999-05-18 | 2000-11-30 | Matsushita Electric Ind Co Ltd | バイトコードプログラム実行制御システム |
-
2000
- 2000-08-25 JP JP2000255317A patent/JP2002073345A/ja active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH11272476A (ja) * | 1997-10-06 | 1999-10-08 | Sun Microsyst Inc | バイトコードされたプログラムを動的に最適化するための方法及び装置 |
| JP2000132408A (ja) * | 1998-10-21 | 2000-05-12 | Fujitsu Ltd | コンピュ―タア―キテクチャエミュレ―ションシステム |
| JP2000172512A (ja) * | 1998-12-03 | 2000-06-23 | Internatl Business Mach Corp <Ibm> | バイトコ―ドを実行するための方法およびデ―タ処理システム |
| JP2000222220A (ja) * | 1999-01-28 | 2000-08-11 | Internatl Business Mach Corp <Ibm> | 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ |
| JP2000330792A (ja) * | 1999-05-18 | 2000-11-30 | Matsushita Electric Ind Co Ltd | バイトコードプログラム実行制御システム |
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN100349114C (zh) * | 2004-01-14 | 2007-11-14 | 三星电子株式会社 | 用于增加java程序处理能力的系统和方法 |
| US8056061B2 (en) | 2004-10-21 | 2011-11-08 | Samsung Electronics Co., Ltd. | Data processing device and method using predesignated register |
| JP2010191734A (ja) * | 2009-02-19 | 2010-09-02 | Hitachi Software Eng Co Ltd | 画像再生装置及び中間語プログラム実行方法 |
| WO2012045238A1 (zh) * | 2010-10-09 | 2012-04-12 | 中兴通讯股份有限公司 | 一种移动设备上应用程序的启动方法及装置 |
| US8726249B2 (en) | 2010-10-09 | 2014-05-13 | ZTE Corportaion | Bootup method and device for application program in mobile equipment |
| CN111880806A (zh) * | 2020-07-23 | 2020-11-03 | 深圳融卡智能科技有限公司 | 应用执行方法与应用执行系统 |
| CN111880806B (zh) * | 2020-07-23 | 2023-11-21 | 无锡融卡科技有限公司 | 应用执行方法与应用执行系统 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP1145120B1 (en) | Generating compiled programs for interpretive runtime environments | |
| EP1300758B1 (en) | Dynamically switching statically bound function calls to dynamically bound function calls without recomplication | |
| US6637025B1 (en) | Dynamic selection/definition of which class/methods should or should not be jit'ed using information stored in a jar file | |
| US6886094B1 (en) | Apparatus and method for detecting and handling exceptions | |
| US20060026575A1 (en) | Method and system of adaptive dynamic compiler resolution | |
| US8689198B2 (en) | Compiling system and method for optimizing binary code | |
| US7124407B1 (en) | Method and apparatus for caching native code in a virtual machine interpreter | |
| JP2002527811A (ja) | オンスタックリプレースメントを伴うことなくバーチャルコールを直接にインライン化する方法 | |
| JP2000222220A (ja) | 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ | |
| US9038039B2 (en) | Apparatus and method for accelerating java translation | |
| JP4086791B2 (ja) | コンパイラプログラム、動的コンパイラプログラム、再現コンパイラプログラム、再現コンパイラ、コンパイル方法、及び記録媒体 | |
| US7065755B2 (en) | Method and apparatus for removing class initialization barriers from shared compiled methods | |
| KR100577366B1 (ko) | 이종의 자바 메소드를 실행하는 방법 및 장치 | |
| US7739674B2 (en) | Method and apparatus for selectively optimizing interpreted language code | |
| US6931638B2 (en) | Method and apparatus to facilitate sharing optimized instruction code in a multitasking virtual machine | |
| US6883165B1 (en) | Apparatus and method for avoiding deadlocks in a multithreaded environment | |
| US8099723B2 (en) | Referencing a constant pool in a java virtual machine | |
| US6779188B1 (en) | Apparatus and method for improved devirtualization of method calls | |
| US5150474A (en) | Method for transferring arguments between object programs by switching address modes according to mode identifying flag | |
| US8042103B2 (en) | Pre-translated files used in a virtual machine | |
| JP2002073345A (ja) | 情報処理装置及び記録媒体 | |
| US7581216B2 (en) | Preserving platform independence with native accelerators for performance critical program objects | |
| EP0790555B1 (en) | Compile apparatus and method | |
| US6275985B1 (en) | Method and apparatus for developing an application that implements garbage collection efficiently by combining proxy objects with compiler support | |
| US6978448B1 (en) | Method and apparatus for rewriting bytecodes to minimize runtime checks |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070803 |
|
| A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20080728 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100406 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100921 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110201 |